通过crontab终止后运行python程序

时间:2014-03-24 09:24:59

标签: linux bash ubuntu crontab

我有一个python webscraping程序,需要在程序终止后连续报废。我的技术如下

crontab -e(设置)

* * * * * /home/ahmed/Desktop/run.sh

run.sh

    TMP_FILE=/tmp/i_am_running
    [ -f $TMP_FILE ] && exit
    touch $TMP_FILE
    /usr/bin/python /home/ahmed/Desktop/python.py
    rm $TMP_FILE

bash代码必须有一些问题,或者可能是我在crontab中的命令错误。程序没有运行。请指导


在Mark建议之后我像这样修改了脚本

#!/bin/bash
PATH=$PATH:/bin:/usr/bin

date +'%H:%M:%S Started' >> /home/ahmed/Desktop/log.txt

TMP_FILE=/tmp/i_am_running
[ -f $TMP_FILE ] && exit
touch $TMP_FILE

date +'%H:%M:%S Starting Python' >> /home/ahmed/Desktop/log.txt
/usr/bin/python /home/ahmed/Desktop/python.py
rm $TMP_FILE

date +'%H:%M:%S Ended' >> /home/ahmed/Desktop/log.txt

我使用的cron命令是* * * * * /home/ahmed/Desktop/run.sh

创建的日志文件是

15:21:01 Started
15:21:02 Starting Python
15:22:02 Started
15:23:01 Started
15:24:01 Started
15:24:30 Ended
15:25:01 Started
15:25:01 Starting Python
15:26:01 Started
15:27:18 Started
15:28:01 Started
15:29:01 Started
15:30:01 Started
15:31:01 Started
15:31:16 Ended
15:32:01 Started
15:32:01 Starting Python
15:33:01 Started
15:34:01 Started

似乎程序在结束之前重新启动。日志文件应该有启动程序,启动,结束,启动程序,启动,结束等。

有人可以指导我吗?

1 个答案:

答案 0 :(得分:2)

您是否已将脚本设置为可执行文件?

chmod +x /home/ahmed/Desktop/run.sh

在你的剧本中加入一个合适的shebang和PATH,这样就像这样开始:

 #!/bin/bash
 PATH=$PATH:/bin:/usr/bin

从命令行

单独试用您的脚本
/home/ahmed/Desktop/run.sh

如果这不起作用,请更改shebang行以在末尾添加-xv

#!/bin/bash -xv 

检查/ tmp / i_am_running是否存在

检查你的cron日志

grep CRON /var/log/syslog

考虑更改您的脚本,以便您可以看到它何时开始和/或它是否实际运行了您的python:

#!/bin/bash
PATH=$PATH:/bin:/usr/bin

date +'%H:%M:%S Started' >> /home/ahmed/Desktop/log.txt

TMP_FILE=/tmp/i_am_running
[ -f $TMP_FILE ] && exit
touch $TMP_FILE

date +'%H:%M:%S Starting Python' >> /home/ahmed/Desktop/log.txt
/usr/bin/python /home/ahmed/Desktop/python.py
rm $TMP_FILE

date +'%H:%M:%S Ended' >> /home/ahmed/Desktop/log.txt

顺便说一句,我不确定在18:01一次跑步是否构成"连续刮刮"?