我正在尝试设置一个用于抓取内容的crontab。到目前为止,我写了
23 18 * * * cd PycharmProjects/untitled/Project1 && scrapy crawl xx -o test.csv
但是当我这样做时,我得到了这个:
/bin/sh: scrapy: command not found.
我该怎么办? 我试图在我的mac中找到scrapy但是找不到它。但我可以从终端运行crontab任务的第二部分。
答案 0 :(得分:2)
由于crontab没有为您设置PATH变量,因此它不知道scrapy
是什么。
简单的补救方法是使用完整的scrapy路径:
$ which scrapy
/usr/bin/scrapy
然后使用它而不只是scrapy
:
23 18 * * * cd PycharmProjects/untitled/Project1 && /usr/bin/scrapy crawl xx -o test.csv
另一种方法是在crontab中设置PATH
环境:
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# or your custom path, check your `.bashrc` for PATH you have set in your shell
23 18 * * * cd PycharmProjects/untitled/Project1 && scrapy crawl xx -o test.csv
旁注:
此外,在cron中将命令包装在某种脚本中非常常见,该脚本填充PATH
和其他配置并在cron中调用该脚本而不是直接调用命令。