用cron定时跑scrapy爬虫命令,没跑起来(数据库里没更新数据),脚本文件和cron文件如下
#run_spider.sh
#!/bin/bash
set -ex
# 生成随机延迟时间,范围为 0 到 59 分钟
delay=$((RANDOM % 60))
# 等待随机延迟时间(秒)
sleep ${delay}s
# 运行您的爬虫命令
cd /home/ubuntu/project/waterDataScrapy && scrapy crawl main_water
0 * * * * . /etc/profile && /bin/bash /home/ubuntu/cron/run_spider.sh
排查过程
1 手动执行脚本里的命令是ok的
/bin/bash /home/ubuntu/cron/run_spider.sh
2 cron的日志里有执行的记录
grep CRON /var/log/syslog
3 给sh里的命令加上了输出日记,且爬虫数据处理后会输出一下
cd /home/ubuntu/project/waterDataScrapy && scrapy crawl main_water >> scrapy.log
日记里没有任何输出,应该是没执行到
4 在cron文件中给执行sh文件加上日志
0 * * * * . /etc/profile && /bin/bash /home/ubuntu/cron/run_spider.sh >> /home/ubuntu/cron/clog.log 2>&1
找到问题了说scrapy命令不存在
可在脚本里将scrapy加入PATH,或者直接指定绝对路径
ubuntu@VM-12-13-ubuntu:~/project/waterDataScrapy$ which scrapy
/usr/local/qcloud/python/bin/scrapy
cd /home/ubuntu/project/waterDataScrapy && /usr/local/qcloud/python/bin/scrapy crawl main_water >> scrapy.log