在用crontab进行定时任务时,发现任务并没有执行。而手动bash yourshell.sh时可以正常的执行程序。以下是个人的解决流程。
一、将错误打印打out.log
*/10 * * * * bash yourshell.sh >> /tmp/out.log 2>&1
二、查看out.log发现并没有出错。那么一般是shell脚本环境变量的问题。
export PATH=$PATH:/usr/local/bin(如果没有这一行语句,shell会不识别scrapy)
cd /home/your/spider/
nohup scrapy crawl yourspider >> cookie.log 2>&1 &
附:scrapy启动自动添加crontab定时任务
1 #!/bin/sh 2 export PATH=$PATH:/usr/local/bin 3 if grep -Fxq "*/10 * * * * bash /your/shell.sh >> /tmp/out.log 2>&1" /var/spool/cron/${USER} 4 then 5 cd /your/spider/ 6 nohup scrapy crawl spider_name >> cookie.log 2>&1 & 7 else 8 cronfile='/tmp/crontab.${USER}' 9 echo "*/10 * * * * bash /your/shell.sh >> /tmp/out.log 2>&1" >> $cronfile 10 crontab $cronfile 11 rm -rf $cronfile 12 cd /your/spider/ 13 nohup scrapy crawl spider_name >> cookie.log 2>&1 & 14 fi