本文主要记录: 1、crontab的用法。
2、crontab与scrapy的结合。
一、crontab
crontab是什么
Linux crontab是用来定期执行程序的命令。crontab常用命令
1、crontab -l : 列出当前的定时任务列表
2、crontab -e : 执行编辑器来设定时任务-
定时任务设置格式
格式:[分] [时] [日] [月] [周] [执行的操作]
例:00 19 * * * python /root/spider/test.py
每天19:00执行python /root/spider/test.py 注意一定要是绝对路径
常用符号:
星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。
以下是几个例子:
1、每分钟执行一次: * * * * * command
2、每一小时执行一次 :00 * * * * command
(精确时间点) or * */1 * * * command
( / 表示频率)
3、每小时的15和30分各执行一次 15,45 * * * * command
(, 表示并列)
4、在每天上午 8- 11时中间每小时 15 ,45分各执行一次:15,45 8-11 * * * command
(- 表示范围)
5、每个星期一的上午8点到11点的第3和第15分钟执行:3,15 8-11 * * 1 command
6、每隔两天的上午8点到11点的第3和第15分钟执行:3,15 8-11 */2 * * command
二、crontab与scrapy的结合
通常运行scrapy需要进入到该scrapy项目的文件夹下,所以我们不能直接scrapy crawl ……。
例如我需要每天19:00运行我部署的某天气网站的scrapy爬虫,名为chinaweather:
1、我们需要先 cd
进入到该scrapy项目的路径下
2、对于scrapy需要使用绝对路径,如果找不到,可以使用which scrapy
找到如:/usr/local/anaconda/bin/scrapy。
3、这个scrapy运行的时候会打印一些日志,我们用>>
可以把它统一追加到一个文件中,方便检查scrapy是否正常运行。 (需要注意的是>
是覆盖重写,>>
是追加操作)
使用crontab -e 编辑后,即可添加到定时任务中:
00 19 * * * cd /root/spider/weather && /usr/local/anaconda/bin/scrapy crawl chinaweather >> /root/spider/weather/weather_history.log
最后保存退出,就会显示任命了新的定时任务: