我是使用crontab的新手,我只是尝试阅读文章如何每5分钟使用scrapy自动安排抓取,有些文章建议使用crontab ... 但我不知道如何实现正确的脚本...
这里是我的.sh文件
#!/bin/sh
cd /home/kautsar/Downloads/thehack
scrapy crawl thehack
我已经+ x来运行runScrapy.sh
但是当我尝试使用
时crontab -e
*/5**** cd /home/kautsar && sh runScrapy.sh
然后当我按下回车按钮时,结果为“?” 谁知道这意味着什么?你能解释一下吗? 请告诉我正确的方法来定期进行网页抓取,这个时间由我设定..非常感谢
答案 0 :(得分:1)
我怀疑您的默认编辑器设置为ed
。不知道为什么。如果是这种情况,您可以阅读如何使用man ed
命令,但将系统配置为使用您喜欢的编辑器可能会更好。我们假设它是vim
。如果不是,请将vim
替换为相应的名称。
export EDITOR=vim
crontab -e
此时,您应该在您最喜欢的编辑器中编辑crontab
文件。我建议您在文件中添加注释,类似于下面的注释。我总是这样做,以提醒自己所有列的各种星号是什么。 DoM
是月份日(1-31),DoW
是星期几(0-7或周日/周一/周二等)。然后将您的shell脚本作为完全限定的文件名(因此您不需要cd
和脚本调用)。
# min hr DoM mon DoW cmd
*/5 * * * * sh /home/kautsar/runScrapy.sh
此时,您应该可以像使用编辑器一样保存并退出。
在crontab
文件中还有其他等待你的陷阱。阅读man 5 crontab
并特别注意PATH和HOME的定义。 cron
在缩写环境中运行,而不是在您的登录环境中运行,因此有时需要设置PATH变量。您可能会发现将$ HOME设置为主目录很有用。例如,您的命令可能是$HOME/runScrapy.sh
。最后,您可以将MAILTO设置为cron
发送任何命令输出的地址,如果您的系统上未配置外发电子邮件,这可能很有用。