Hi All,
I am running the below shell script through cron and surprisingly it gives different output
$uname -a
Linux 2.6.18-194.3.1.7.3.el5xen #1 SMP Fri Jul 30 00:08:45 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
$ echo $SHELL
/bin/bash
shell script:
cat sar_cpu.sh
#!/bin/bash
hdr=1
while true; do
sar -u 10 1 | awk '/user/{if(hdr){print $1,$2,$4,$6,$7};next} /^[0-9]/{print $1,$2,$4,$6,$7}' OFS=, hdr=$hdr >> /sar_cpu_`date +%m%d%y`.csv
sleep 5
hdr=0
done
Output when the script runs through cron:
$ cat sar_cpu_040913.csv
20:09:01,CPU,%nice,%iowait,%steal
20:09:11,all,0.00,0.05,0.00
20:09:22,all,0.00,0.03,0.00
20:09:33,all,0.00,0.05,0.03
20:09:44,all,0.00,0.03,0.00
20:09:55,all,0.00,0.03,0.00
20:10:06,all,0.00,0.03,0.00
20:10:17,all,0.00,0.03,0.03
20:10:28,all,0.00,0.03,0.00
20:10:39,all,0.00,0.03,0.00
20:10:50,all,0.00,0.03,0.00
20:11:01,all,0.00,0.25,0.02
20:11:12,all,0.00,0.00,0.00
20:11:23,all,0.00,0.02,0.00
20:11:34,all,0.00,0.03,0.03
20:11:45,all,0.00,0.02,0.00
20:11:56,all,0.00,0.05,0.00
20:12:07,all,0.00,0.05,0.00
20:12:18,all,0.00,0.05,0.03
I get the expected output when the script is run manually as below:
$ ./sar_cpu.sh &
or
$ nohup ./sar_cpu.sh &
Expected output:
$ cat sar_cpu_040913.csv
05:35:27,PM,%user,%system,%iowait
05:35:37,PM,0.18,0.00,0.03
05:35:48,PM,0.20,0.00,0.15
05:35:59,PM,0.15,0.03,0.03
05:36:10,PM,1.13,1.68,0.55
05:36:22,PM,0.08,0.00,0.03
05:36:33,PM,0.10,0.03,0.00
05:36:44,PM,0.23,0.50,0.00
05:36:55,PM,0.33,0.03,0.03
05:37:06,PM,0.15,0.00,0.00
Any suggestions please as to what is going wrong while executing the same script through cron?
Thanks for your time!
Regards,
a1_win