Visit Our UNIX and Linux User Community


Different output when run from crontab


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Different output when run from crontab
# 1  
Old 05-12-2011
Different output when run from crontab

Hi,

I have a script which checks to see if an app is running and will restart it if it is not.

For some reason when I run it from the crontab it always says it is not running.

The script is as follows: -

Code:
#!/bin/sh
#
# The following script will look for the PID of SickBeard and output the result

PROGRAM="SickBeard"
PROGRAM1="/volume1/@appstore/sickbeard/SickBeard.py"
LOG_DIR="/volume1/@appstore/"
LOG_FILE="sb_monitor.log"
APPCHK=$(ps | grep $PROGRAM1 | grep -v "grep $PROGRAM1" | wc -l)
SUPPORTSTAFF="me@me.com"

# The 'if' statement below checks to see if the process is running
# with the 'ps' command.  If the value is returned as a '0' then
# an email will be sent and the process will be safely restarted.

echo "Number of processes running =$APPCHK"

if [ $APPCHK = '0' ];

then

# Write datestamp & output to log file
echo "$(date +%c) $*" >> $LOG_DIR/$LOG_FILE
echo "$PROGRAM is not running">> $LOG_DIR/$LOG_FILE

# Send an email to advise SickBeard was down
echo "$PROGRAM is not running" | /opt/bin/nail -s "$LOG_FILE" -a $LOG_DIR/$LOG_FILE $SUPPORTSTAFF

# Start SickBeard
echo "$(date +%c) $*"
echo "Starting $PROGRAM"
/var/packages/sab2/target/utils/bin/python /volume1/@appstore/sickbeard/SickBeard.py --quiet &

else

# When Sickbeard is running write to log file to say all is fine
echo "$(date +%c) $*" >> $LOG_DIR/$LOG_FILE
echo "$PROGRAM is running">> $LOG_FILE
echo "No action taken...">> $LOG_FILE
echo "$PROGRAM is running"
echo "No action taken..."

fi

exit

The crontab entry is: -

Code:
#minute        hour        mday        month        wday        who        command
0        0        *        *        *        root        /usr/sbin/ntpdate -b pool.ntp.org
*/1        *        *        *        *        root        /volume1/@appstore/sickbeard_Monitor.sh >> /volume1/@appstore/log.txt 2>&1


The logic will always return APPCHK=0 when run from the crontab.

Any ideas?
# 2  
Old 05-12-2011
have you checked the mailbox for related errors while running this job in cron.?
# 3  
Old 05-12-2011
Yeah, no errors.

The script runs, it just does not seem to interpret the logic correctly like it does if I run it myself.
# 4  
Old 05-12-2011
try to add the output of ps command in the log file before greping anything from.

Then you can make sure atleast you are getting the program name (as in $PROGRAM1) as required in the ps output.
# 5  
Old 05-12-2011
A "ps" command with no parameters will list the processes for the current terminal only. A "ps" command with no parameters run from cron will fail because there is no current terminal context.

Please post what Operating System and version you are running. There is much variety in the syntax for "ps".
Please post the output from "ps" when run from the command line after starting the application. I'd be surprised to see full path names in that output.

In the end you will need a syntax for "ps" which shows your application when it is running.
# 6  
Old 05-12-2011
Hi,

I'm running this on a Synology DS210 NAS in the ash shell.

The output for the ps command at the prompt is: -

Code:
/volume1 # ps | grep sickbeard
 1561 root      2928 S    grep sickbeard
10514 root      188m S    /var/packages/sab2/target/utils/bin/python /volume1/@appstore/sickbeard/SickBeard.py --quiet
/volume1 #

Regards,

Simpic
# 7  
Old 05-12-2011
I have no experience of "ash" or a version of "ps" which behaves like this.

(Appeal for "ash" expert).

General advice is to create a test cron and run the "ps" command and look at the results. Then possibly run the "ps" command with parameters to show processes not started from the current terminal.
If however the "ps" command from a cron is good enough, then replace
Code:
grep $PROGRAM1
with
grep "${PROGRAM1}"


Previous Thread | Next Thread
Test Your Knowledge in Computers #38
Difficulty: Easy
The standard port number for SMTP applications is 25.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Can't get my crontab to run

I'm trying to get a crontab to run, every Friday at 11am and the problem is that it isn't running at all. 0 11 * * 6 /Users/martinb/Documents/SYSADMIN/Regular-Scripts/Info-And-Backups.sh Here's a link to a screenshot of my script (I've censored my email address). Screen Shot 2017 11 03... (3 Replies)
Discussion started by: $shell_Learner
3 Replies

2. Shell Programming and Scripting

Script fails to run properly when run from CRONTAB

Hello all, I'm trying to write a script to gather and send data and it works just fine at the bash command line, but when executing from CRON, it does not run properly. My scripting skills are pretty limited and there's probably a better way, but as I said it works at the command line, but... (12 Replies)
Discussion started by: rusman
12 Replies

3. Shell Programming and Scripting

How to give full access to output files created by .sh script run via crontab?

Hi Expert, I have a .sh script in my home/new_dir/script.sh This script creates number of output files at home/new_dir/email, home/new_dir/logs dir. I am running this script using crontab (owner root). Now this output files are getting created with rw-r----- 1 root root So if i... (2 Replies)
Discussion started by: Jeet1982
2 Replies

4. 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

5. Shell Programming and Scripting

Who -u gives different output if run from cron than if run from terminal?

If I run 'who -u' interactively or from a script invoked through bash in a tty on my Ubuntu 12LTS box I get an output like this: testuser pts/0 Dec 9 02:32 . 2163 (host.xx.yy) running the same through cron I get: testuser pts/0 2012-12-09 02:32 00:05 2163... (2 Replies)
Discussion started by: latimer
2 Replies

6. Shell Programming and Scripting

Awk script to run a sql and print the output to an output file

Hi All, I have around 900 Select Sql's which I would like to run in an awk script and print the output of those sql's in an txt file. Can you anyone pls let me know how do I do it and execute the awk script? Thanks. (4 Replies)
Discussion started by: adept
4 Replies

7. HP-UX

Crontab do not run on PM hours

Hi All I have a problem, I wonder if you can help me sort it out: I have the following entry in the cron: 00 1,13 * * * /home/report/opn_amt_gestores_credito.ksh > opn_amt_gestores_credito.log But the entry only runs at 01:07 I have stopped the cron deamon, and started, but it still... (39 Replies)
Discussion started by: fretagi
39 Replies

8. Solaris

crontab to run every 20 second

Hi experts, I want to set the crontab for my script which will run every 20 seconds I think below could be the possible one- */3 * * * * /export/home/username/scripts/runing.sh As my system(SOLARIS 9) is live- i am confused to implement before make sure !!! I need... (4 Replies)
Discussion started by: thepurple
4 Replies

9. HP-UX

Run crontab every 6 days

Hi all, I need to run a shell script every 6 days using crontab. I've been searching a bit and found the following syntax for this: * * */6 * * /apps/temp/maxx.sh > /apps/temp/maxx.log 2>&1 respectively * * 0/6 * * /apps/temp/maxx.sh > /apps/temp/maxx.log 2>& Unfortunately when trying to... (8 Replies)
Discussion started by: Endo
8 Replies

10. Shell Programming and Scripting

output from crontab run

Hi, I am trying to schedule a job in linux through the crontab command.My script actually does some text processing and echoes some output.My cron scheduler is working fine,but the output messages(echoes from script) is mailed to my mail account(in unix -/var/local/mail).Is it not possible... (0 Replies)
Discussion started by: DILEEP410
0 Replies

Featured Tech Videos