我在服务器上安装了Scrapyd。
我想让它在我的服务器重新启动时启动。
我在这里/etc/init/myjob.conf
创建了以下内容
description "my job"
start on startup
task
cd /var/www/scrapers && scrapyd >& /dev/null &
我还尝试在crontab -e
@reboot cd /var/www/scrapers && scrapyd >& /dev/null &
他们两个都没有用。
我使用grep CRON /var/log/syslog
检查了cronlogs,在这里我看到命令已经运行但是Scrapyd没有启动
Mar 30 13:33:28 mani CRON[446]: (root) CMD (cd /var/www/scrapers && scrapyd >& /dev/null &)
如您所见,该命令以ROOT用户身份运行。
如果我在终端中手动运行该命令,它可以工作!
PS:
我将命令改为
@reboot cd /var/www/scrapers && scrapyd >> /var/www/log.txt
并创建了日志文件,但它是空的!
答案 0 :(得分:0)
您必须尝试手动启动流程,看看会发生什么。这一行:
cd /var/www/scrapers && scrapyd
有意义如果:1)目录/ var / www / scrapers确实存在2)scrapyd是存在于该目录中的二进制文件,PATH环境变量包括实际目录(“。”通配符)。
也许你可以试试:
cd /var/www/scrapers && ./scrapyd
没有重定向标准输出到/ dev / null,看看会发生什么。在使用cron之前一定要尝试手册。
答案 1 :(得分:0)
我无法通过 /etc/rc.local 或 crontab 抓紧工作,所以找到了解决方法。我相信会有更好的方法,但就此而言,这对我有用。
我创建了一个python文件start.py
。
import os
os.system('/usr/bin/python3 /home/ubuntu/.local/bin/scrapyd > /home/ubuntu/scrapy.log &')
只需通过crontab调用python文件start.py
。
通过cronat -e
将其添加到crintab文件中。
@reboot /usr/bin/python3 /home/ubuntu/start.py
基本上,我所做的是通过crontab调用python filr来通过外壳执行scrapy。