我有一个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
似乎程序在结束之前重新启动。日志文件应该有启动程序,启动,结束,启动程序,启动,结束等。
有人可以指导我吗?
答案 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一次跑步是否构成"连续刮刮"?