在用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定时任务
#!/bin/sh
export PATH=$PATH:/usr/local/bin
if grep -Fxq "*/10 * * * * bash /your/shell.sh >> /tmp/out.log 2>&1" /var/spool/cron/${USER}
then
cd /your/spider/
nohup scrapy crawl spider_name >> cookie.log >& &
else
cronfile='/tmp/crontab.${USER}'
echo "*/10 * * * * bash /your/shell.sh >> /tmp/out.log 2>&1" >> $cronfile
crontab $cronfile
rm -rf $cronfile
cd /your/spider/
nohup scrapy crawl spider_name >> cookie.log >& &
fi