Script when scheduled in Crontab gives extra records in output


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Script when scheduled in Crontab gives extra records in output
# 1  
Old 11-20-2019
Script when scheduled in Crontab gives extra records in output

Hi,

We have created a script that's checks the latency of IIDR subscription by fetching details from a config file (that contains subscription details) and running the CHCCLP command. The out put is then concatenated in a csv file. Once all subscription details are saved the script send a mail alert to the recipients. This script works perfectly when run manually but when we are running it through Crontab the output multiplies with every iteration. So the report should should always give report of 23 subscription but with crontab with every nth iteration the output is 23*n. Could you please help me with some suggestion to resolve this issue.
# 2  
Old 11-20-2019
Hi,

You don't give us much to go on here. You should atleast include the OS and version information when posting in the forum.

It would also be helpfull to see the code (don't for get to use the code tags).

In most cases when a script runs from the shell and doesn't run from the users crontab there is an environment difference.

So if you could post the OS and level along with the cron entry and the script we can probably assist you further.

Regards

Gull04
# 3  
Old 11-20-2019
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.9 (Tikanga)
Release: 5.9
Codename: Tikanga

Code:
#!/bin/bash
host=`hostname`
while read LINE
do
        subscription=`echo $LINE | cut -d ':' -f1`
        src=`echo $LINE | cut -d ':' -f2`
        target=`echo $LINE | cut -d ':' -f3`
        /e00/ibm/access_server/bin/chcclp -f /home/cdc_access/scripts/Subscription_Latency.cmd source:$src target:$target subscription:$subscription >/home/cdc_access/scripts/Status.log
        if `grep -q "not mirroring" /home/cdc_access/scripts/Status.log`
        then
                latency=`echo "NULL"`
                substatus=`echo "Not-Mirroring"`
                echo -e "$subscription\t$src\t$target\t$substatus\t$latency">>/home/cdc_access/scripts/LatencyStatus.csv
        else
                awk '(NR==21)' < /home/cdc_access/scripts/Status.log > /home/cdc_access/scripts/outputfile.txt
                sec=`awk '{print $(NF)}' </home/cdc_access/scripts/outputfile.txt`
                substatus=`echo "Mirroring"`
                latency=`echo - | awk -v "S=$sec" '{printf "%dh:%dm:%ds",S/(60*60),S%(60*60)/60,S%60}'`
                echo -e "$subscription\t$src\t$target\t$substatus\t$latency">>/home/cdc_access/scripts/LatencyStatus.csv
        fi
done </home/cdc_access/scripts/SubscriptionList.cfg;
EMAIL_ID=`cat /home/cdc_access/scripts/MailList.cfg`;
awk -v EMAIL_ID="$EMAIL_ID" -v host="$host" ' BEGIN{
print "From:XXXXXXXXXXXXXX@"host
print "TO: "EMAIL_ID
print "MIME-Version: 1.0"
print "Content-Type: text/html"
print "Subject: IIDR Subscription Latency Status on Production"
print "<html><body><p>Hi Team,<br /><br />Please find the below status of the IIDR Subscriptions and their latency.</p><table border=2 cellspacing=0 cellpadding=3"
print "<tr>"
print "<td bgcolor="blue"><b>Subscription Name</b></td>";
print "<td bgcolot="blue"><b>Source Datastore</b></td>";
print "<td bgcolor="blue"><b>Target Datastore</b></td>";
print "<td bgcolor="blue"><b>Subscription Status</b></td>";
print "<td bgcolor="blue"><b>Latency(hh:mm:ss)</b></td>";
print "</tr>"
}{
print "<tr>"
print "<td>"$1"</td>";
print "<td>"$2"</td>";
print "<td>"$3"</td>";
print "<td>"$4"</td>";
print "<td>"$5"</td>";
print "</tr>"
}END{
print "</table><p>IBM Infosphere Data Replication Monitoring Script</p></body></html>"
} ' LatencyStatus.csv | /usr/sbin/sendmail -t
rm -f  /home/cdc_access/scripts/LatencyStatus.csv
rm -f  /home/cdc_access/scripts/outputfile.txt
rm -f /home/cdc_access/scripts/Status.log

# 4  
Old 11-20-2019
Hi,

Can you check under the users home directory for more than one copy of the "LatencyStatus.csv" file, there may be une under /home/cdc_access/scripts and one under /home/cdc_access

Regards

Gull04
# 5  
Old 11-20-2019
Quote:
Originally Posted by ab095
Hi,

This script works perfectly when run manually but when we are running it through Crontab the output multiplies with every iteration .....
These types of issues are generally caused by PATH (shell environmental) and file permission issues.

You did not yet provide any user information for either running the script manually or in a crontab; and nor did you provide the environmental variables for the respective users. It matters (the user and the environmental variables).

When you provide that information, the root cause of any issue should start to be more clear.

But please also address gull's line of questioning as well.

Thanks,.
This User Gave Thanks to Neo For This Post:
# 6  
Old 11-20-2019
Hi Gull04,

I found a copy of "LatencyStatus.csv" file, under /home/cdc_access. I removed the file and tried running the crontab but this time there is no output records in the mail report.
Got the output error
Code:
awk: cmd. line:13: fatal: cannot open file `LatencyStatus.csv' for reading (No such file or directory).


Last edited by vbe; 11-20-2019 at 08:55 AM..
# 7  
Old 11-20-2019
Hi,

You should put the full path to the file in the script at;

Code:
}END{
print "</table><p>IBM Infosphere Data Replication Monitoring Script</p></body></html>"
} ' /home/cdc_access/scripts/LatencyStatus.csv | /usr/sbin/sendmail -t

Please note there may still be issues and if you need futher assistance, you will need to provide the additional information that was requested.

Regards

Gull04
This User Gave Thanks to gull04 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Script gives error when scheduled in crontab

i have written one script which is working fine when i run it manually but giving error when i schedule it in crontab. cat SUMMARY.sh #!/bin/bash DT1=`date +%Y%m%d` echo "Off PP TT" >>summary_$DT1.txt cat ues1.txt_$DT1 >>summary_$DT1.txt cat ues2.txt_$DT1... (2 Replies)
Discussion started by: scriptor
2 Replies

2. Shell Programming and Scripting

Log file is not updating when I run shell scripts scheduled thru crontab

Hi Forum, Good Day! I have created an empty html file wtih permissoin 777 created shell script(with permission 777) , code is below. #=======================start============== . /data09/oracle/apps_st/appl/D_oraapp095.env rm -rf /home/mnp/Test_log.txt echo... (1 Reply)
Discussion started by: kartheekbk
1 Replies

3. Shell Programming and Scripting

Scheduled job not running automatically in crontab

i have a job scheduled in crontab. The problem is, it is not running automatically as per the time scheduled. But runs when executed manually. What would be the problem? Help me with this please. (6 Replies)
Discussion started by: Santhosh CJ
6 Replies

4. Red Hat

Script not working if crontab scheduled

Hi all, I'm working to a script with /bin/bash shebang. The script works perfectly if I run from command line. The script runs under a non root user and inside the commands are set with sudo command in a such a way they can be run under root, for example (first rows of the script):... (5 Replies)
Discussion started by: idro
5 Replies

5. Shell Programming and Scripting

Why my git command has no output in crontab but works well run this script manually?

cat /home/lyang001/update.sh #!/bin/sh #shopt -s expand_aliases HOME_DIR=/home/lyang001/updates UPDATE_MAIL=${HOME_DIR}/updates.mail rm $UPDATE_MAIL -rf cd $HOME_DIR/wr-kernel git log --no-merges --since="20 day ago" --name-status --pretty=format:"%an %h %s %cd" origin/WRLINUX_5_0_1_HEAD >>... (2 Replies)
Discussion started by: yanglei_fage
2 Replies

6. Shell Programming and Scripting

Compare two files with different number of records and output only the Extra records from file1

Hi Freinds , I have 2 files . File 1 |nag|HYd|1|Che |esw|Gun|2|hyd |pra|bhe|3|hyd |omu|hei|4|bnsj |uer|oeri|5|uery File 2 |nag|HYd|1|Che |esw|Gun|2|hyd |uer|oi|3|uery output : (9 Replies)
Discussion started by: i150371485
9 Replies

7. Shell Programming and Scripting

Ascii Mode appending extra records to csv file

I am relatively new to this forum and Unix scripting. ksh script: part 1 :will call a PL\SQL program will create 3 CSV file at the unix directory. part 2 : will sftp the files to the EFT server. Once the EFT server receives these file , it will transfer them to a shared windows folders. ... (3 Replies)
Discussion started by: developerpa
3 Replies

8. UNIX for Dummies Questions & Answers

crontab scheduled details required

Hi, I have the below job scheduled in crontab. Can you please tell me at what interval this job is scheduled? Where is the name of the job defined here? I will definitely go through the UNIX documentation a little later, for the time being, please provide me few details on this. Thank you. ... (0 Replies)
Discussion started by: Dev_Dev
0 Replies

9. Shell Programming and Scripting

Extra output in the script

Hi , I am trying to execute the following script. #!/bin/sh find . -name "common.log.diff" if ; then cp common.log common.log.diff diff common.log common.log.diff > DIFFERENCE.log cp common.log common.log.diff grep "ERROR" DIFFERENCE.log if ; then echo "1" else echo "0" fi... (5 Replies)
Discussion started by: himvat
5 Replies

10. Shell Programming and Scripting

Problem with executing a script scheduled in crontab

Hi I have written a shell script(in Solaris) in which following logic is there..... i=1 while read control do key=`echo $control | awk -F$DELIMITOR '{ print $1 }'` echo "Key Values" ${key} i=`/usr/bin/expr $i + 1` done < $CONFPATH/$CONFFILE when i execute it at prompt it... (4 Replies)
Discussion started by: Amardeep
4 Replies
Login or Register to Ask a Question