我在 ubuntu 16.04 digital ocean 上运行 cronjob 时遇到了麻烦。
我编写了一个 Python 蜘蛛程序,希望它每 5 分钟运行一次。为了运行这个蜘蛛程序,我编写了一个脚本 runmyspider.sh (chmod +x),命令如下:
scrapy runspider aspider.py
现在我想通过 Cron 调用这个脚本。
*/5 * * * * sh /scripts/runmyspider.sh 2>&1 /scripts/spider.log
但是,蜘蛛从未运行(我可以看到数据库中没有任何变化,如果我手动执行文件,就会发生更改)
我在这里做错了什么?我之前多次设置了 cron,但这次似乎遇到了错误...
感谢您的所有建议!
答案1
- 始终使用绝对路径以避免出现问题。
/bin/sh
(或 /usr/bin/?)
/usr/bin/scrapy
(无论它在哪里,你都可以使用它which scrapy
来查找二进制文件)
最重要的是为 scrapy 使用的 aspider.py 文件添加脚本路径,我猜可以吗/scripts/aspider.py
?
我的第一个猜测是 cron 正在运行,找到 sh,sh 找到 scrapy,但 scrapy 没有找到 py 文件。
- 不要覆盖日志文件,而是添加:
*/5 * * * * /bin/sh /scripts/runmyspider.sh >> /scripts/spider.log 2>&1