I want to run some script of python
every 24 hours, at every 23:59:58 i want to kill the the job. I want to run python
immediately. Thus I use this syntax
bellow
* */24 * * * cd /ftp/ftp1
&& timeout -s 9 86398 python2.6 lpr_10.10.252.121.py 10.10.252.121 450 >>
res_10.10.252.121.txt
But
on cron log, their script are not running.
I've try to
/etc/rc.d/init.d/crond
restart
Here are the log
cron
May 18 10:13:45 cisco-cumc
crontab[31368]: (root) REPLACE (root)
May 18 10:13:45 cisco-cumc
crontab[31368]: (root) END EDIT (root)
May 18 10:14:01 cisco-cumc crond[5090]:
(root) RELOAD (/var/spool/cron/root)
May 18 10:15:24 cisco-cumc
crontab[31449]: (root) BEGIN EDIT (root)
May 18 10:15:42 cisco-cumc
crontab[31449]: (root) REPLACE (root)
May 18 10:15:42 cisco-cumc
crontab[31449]: (root) END EDIT (root)
May 18 10:15:46 cisco-cumc
crontab[31451]: (root) LIST (root)
May 18 10:15:57 cisco-cumc
crond[5090]: (CRON) INFO (Shutting down)
May 18 10:15:57 cisco-cumc
crond[31471]: (CRON) STARTUP (1.4.4)
May 18 10:15:57 cisco-cumc crond[31471]:
(CRON) INFO (RANDOM_DELAY will be scaled with factor 73% if used.)
May 18
10:15:57 cisco-cumc crond[31471]: (CRON) INFO (running with inotify
support)
May 18 10:15:57 cisco-cumc crond[31471]: (CRON) INFO (@reboot jobs
will be run at computer's
startup.)
Tried
ps -ax | grep python
no
python script running
So how to
running script every 24 hours and start immediately?
My machine running on
centos 6.4
thanks
You're
going about this wrong. cron
is designed to start jobs
unattended at known future times; it's not designed to start them now, nor is it
designed to stop them. When you torture a tool to do something it wasn't supposed to do,
you can get into a mess, as you are now.
Let the
job take care of shutting itself down. Consider something
like
#!/bin/bash
cd
/ftp/ftp1
let pause=86400+`date +%s -d 0000`-`date +%s`-10
python2.6
lpr_10.10.252.121.py 10.10.252.121 450 >> res_10.10.252.121.txt
&
sleep $pause
kill -15 %1
exit
0
This tiny
shellscript calculates the number of seconds left between now and next midnight, minus
ten seconds (I could almost certainly have done that more elegantly, but c'est
la vie). It then starts your python job in the background and goes to sleep
for that many seconds, so waking up at 23:59:50, then kills the backgrounded job and
exits. For a more professional approach the job should also check at startup whether
another copy is running, and terminate (with an error to your monitoring system) if it
is.
You can start that safely from
cron once a day at
midnight:
0 0 * * *
/usr/local/bin/noddy-printer-script
You
can also start it immediately from the shell, because it will adjust the sleep gap
accordingly.
Note that Nikhil_CV makes a good
point above; */24
doesn't mean every hour until
25 but instead means when hour is 0 or 24, which since
the latter never happens means only when hour=0, which is why your
job's not running at 10am. Come next midnight, cron
is going to
spend the following hour starting a copy of the job every single minute, which is
probably not what you want. Note also that your CentOS 6 box is href="https://serverfault.com/q/535606/55514">hopelessly out-of-patch
and vulnerable and you should bring it up to C6.9
immediately.
Comments
Post a Comment