Cronjob Activation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Cronjob Activation
# 1  
Old 02-03-2008
Cronjob Activation

Hi All,

I have set a cronjob to run a script at a frequency of 10 mins.
However, if the script takes more than 10 mins to complete, how will the cronjob behaves?
1) Does it ignore the current process and restart the whole process again?
2) Or does it stop to trigger the script again unless previous process has been completed?
# 2  
Old 02-03-2008
Java

Quote:
Originally Posted by Raynon
Hi All,

I have set a cronjob to run a script at a frequency of 10 mins.
However, if the script takes more than 10 mins to complete, how will the cronjob behaves?
1) Does it ignore the current process and restart the whole process again?
2) Or does it stop to trigger the script again unless previous process has been completed?
Depends on your cron implementation but generally it will run another copy of the script 10 mins after the first one is started - regardless of how long the first run takes.

Solutions:
  • Make your script reentrant - ie write it such that it running multiple times at once isn't a problem.
  • Make your script aware of how many times it's currently running - ie create a lock file when it starts up and check for this every time you start.
  • Don't use cron, have the script run continuously and manage it's own scheduling - ie sleep 600
  • Don't use cron, get a better scheduler - depending on your enviornment, this could be something like anacron or control-m.
# 3  
Old 02-04-2008
Quote:
Originally Posted by Smiling Dragon
Depends on your cron implementation but generally it will run another copy of the script 10 mins after the first one is started - regardless of how long the first run takes.

Solutions:
  • Make your script reentrant - ie write it such that it running multiple times at once isn't a problem.
  • Make your script aware of how many times it's currently running - ie create a lock file when it starts up and check for this every time you start.
  • Don't use cron, have the script run continuously and manage it's own scheduling - ie sleep 600
  • Don't use cron, get a better scheduler - depending on your enviornment, this could be something like anacron or control-m.

Hi,

Running the script continously means to say that i have to leave a command prompt window always open. Once closed, the process will be ended, and also another disadvantage is that a infinite looping script will eat up alot of resources, wouldn;t it ?
So i still think cron is the more practical one. But i have no idea about anacron or control-m. Can you enlightened me on that ?

Can you give an example of script being re-entrant ?
I was thinking if i could make the script check for the process to see if the previous process have been completed, can any experts give me some examples of this ? I am using csh by the way.
# 4  
Old 02-06-2008
Quote:
Originally Posted by Raynon
Running the script continously means to say that i have to leave a command prompt window always open. Once closed, the process will be ended
Not at all, just move it to the background, no different to all the other daemonised stuff you are running on your system. If it likes to write to STDOUT, redirect this to a log file (or /dev/null if you prefer).
Quote:
Originally Posted by Raynon
and also another disadvantage is that a infinite looping script will eat up alot of resources, wouldn;t it ?
Much as before, no problems here either. Just use sleep at the bottom of the loop to stop it thrashing.
Quote:
Originally Posted by Raynon
So i still think cron is the more practical one.
Your call of course.
Quote:
Originally Posted by Raynon
But i have no idea about anacron or control-m. Can you enlightened me on that ?
Anacron is a slighty more advanced version of cron, may or may not do what you want. Free (I think)
Control-M is a BMC product that manages scheduling at an enterprise level, it supports job dependancies, understands limited resources and works across multiple platforms. Costs a bit.

Google for more info on these
Quote:
Originally Posted by Raynon
Can you give an example of script being re-entrant ?
Reentrant just means that it can be run multiple times at once without going wonky. One example:
Not rentrant:
Code:
#!/bin/sh
/usr/bin/do_some_stuff > /var/log/did_some_stuff.log
do some other things
if grep 'it worked' /var/log/did_some_stuff.log
then
  /usr/sbin/assume_we_are_good_to_go
else
  echo "Argh"
fi

Reentrant:
Code:
#!/bin/sh
/usr/bin/do_some_stuff > /var/log/did_some_stuff.$$.log
do some other things
if grep 'it worked' /var/log/did_some_stuff.$$.log
then
  /usr/sbin/assume_we_are_good_to_go
else
  echo "Argh"
fi
rm /var/log/did_some_stuff.$$.log

The first example could end up reading back the log of a different instance of itself. The second version includes the current process ID in the log file which prevents this happening.

Another, simpler, way is to just look in the process table for another copy of the script, if found exit immediatly.

Quote:
Originally Posted by Raynon
I was thinking if i could make the script check for the process to see if the previous process have been completed, can any experts give me some examples of this ? I am using csh by the way.
(Assuming system V as opposed to bsd)
Code:
#!/bin/csh
set numprocs=`ps -ef | grep -v grep | grep $scriptname | wc -l | awk '{ print $1 }'`
if ($numprocs == 1) then
    # carry on
else
   echo "Another instance is already running, exiting..."
   exit 0
endif

# 5  
Old 02-13-2008
Hi ,

I am refering to this particular exmaple that you have provided me.

Code:
#!/bin/csh
set numprocs=`ps -ef | grep -v grep | grep $scriptname | wc -l | awk '{ print $1 }'`
if ($numprocs == 1) then
    # carry on
else
   echo "Another instance is already running, exiting..."
   exit 0
endif

What is the significance of the numprocs?
If it equals to 1 , why does it show that the script is not running anymore?

I tried a simple csh script below and it doesn;t really work.
When it is sleeping, the name of the script which is "myscriptname" is not reflected during " ps -ef ", it only shows " usr 28951 28941 0 15:00:39 pts/7 0:00 sleep 100 ".

Can you help ?

Code:
#!/bin/csh

echo xxx
echo ppp 
echo zzz

sleep 100

# 6  
Old 02-13-2008
Quote:
Originally Posted by Raynon
I am refering to this particular exmaple that you have provided me.
Code:
#!/bin/csh
set numprocs=`ps -ef | grep -v grep | grep $scriptname | wc -l | awk '{ print $1 }'`
if ($numprocs == 1) then
    # carry on
else
   echo "Another instance is already running, exiting..."
   exit 0
endif

What is the significance of the numprocs?
If it equals to 1 , why does it show that the script is not running anymore?
Because one copy is running, the one that's currently executing. It's looking for another version of itself (ie 2 or more) in case there are other copies still running.
Quote:
Originally Posted by Raynon
I tried a simple csh script below and it doesn;t really work.
When it is sleeping, the name of the script which is "myscriptname" is not reflected during " ps -ef ", it only shows " usr 28951 28941 0 15:00:39 pts/7 0:00 sleep 100 ".
Works for me, when I run a csh script with a sleep in it, I see the sleep, _and_ the main script running.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Forum Support Area for Unregistered Users & Account Problems

Not able to post after activation

Hi... I got my account created and after activation I'm not able to create new posts or start a new thread. Can you help on how to start a new thread? Thanks. (1 Reply)
Discussion started by: Bang3095
1 Replies

2. UNIX for Dummies Questions & Answers

how to cancel a cronjob if the cronjob still running

hi everyone I'm newbie in this forum hope I can get some help here :) I have a command in crontab that executed every 1 minute sometime this command need more than 1 minute to finish the problem is, the crontab execute this command although it's not finish processing yet and causing the system... (7 Replies)
Discussion started by: 2j4h
7 Replies

3. Forum Support Area for Unregistered Users & Account Problems

Activation problems with new account.

I received the email describing how to acivate my new account (I'm using Outlook 2007). I tried clicking the URL given and was told "invalid web address". I tried copying and pasting both URL's - "invalid web address. Lastly, I tried typing in the URL - "invalid web address". There were no spaces... (1 Reply)
Discussion started by: ki6bxp
1 Replies

4. Forum Support Area for Unregistered Users & Account Problems

Still waiting for activation email

Hi, I've been waiting for about 2 hours to receive my activation email but it hasn't arrived yet. I followed the 'resend activation information' link so I'm now expecting 2 activation emails, neither has arrived yet. How long do I expect this to take? I've tested my email account from other... (2 Replies)
Discussion started by: cambridge
2 Replies

5. Forum Support Area for Unregistered Users & Account Problems

I need another activation email

Hi neo I registered yesterday,but i don't receive the activation email,can u send again? thanks! (1 Reply)
Discussion started by: swrd
1 Replies

6. Forum Support Area for Unregistered Users & Account Problems

Please send activation mail..

Hi, I have registered your site and i havent received any activation mail. please send me activation mail. Thanks & Regards, BVIJAY (1 Reply)
Discussion started by: bvijaycom
1 Replies

7. Forum Support Area for Unregistered Users & Account Problems

Activation

can't activate (0 Replies)
Discussion started by: jamalwil7
0 Replies

8. Forum Support Area for Unregistered Users & Account Problems

Account Activation Problem

Hi, I got the username and activation code to my email id but when i click on the forum link and enter the activation code and username there then , It displays "We could not activate your account because this web address is not valid. Make sure that you have the entire address from the... (1 Reply)
Discussion started by: MIKU
1 Replies

9. Forum Support Area for Unregistered Users & Account Problems

Did not receive activation mail

Hi Administrators, I've registered myself yesterday and have been waiting for my account to be activated. I've followed the instructions in the 'See this if you have an account but cannot post ' thread to request for an activation mail to be sent to my other email address, but still did not... (0 Replies)
Discussion started by: pl_cyber
0 Replies

10. UNIX for Advanced & Expert Users

Wireless ipw2200 activation

hello ! i am trying to activate my wireless network card on my laptop currently running : 2.6.18-1.2869.fc6 , but an error msg appears "ipw2200 device eth1 does not seem to be present, delaying initialization." the same msg also appears at the start up process, when trying to bring up eth1. ... (4 Replies)
Discussion started by: XinU*
4 Replies
Login or Register to Ask a Question