本文主要記錄: 1、crontab的用法。
? ? ? ? ? ? ? ? ? ? ? ? ? 2、crontab與scrapy的結(jié)合。
一、crontab
crontab是什么
? ? ? ?Linux crontab是用來定期執(zhí)行程序的命令。crontab常用命令
? ? ? ?1、crontab -l : 列出當(dāng)前的定時(shí)任務(wù)列表
? ? ? ?2、crontab -e : 執(zhí)行編輯器來設(shè)定時(shí)任務(wù)-
定時(shí)任務(wù)設(shè)置格式
? ? ? ?格式:[分] [時(shí)] [日] [月] [周] [執(zhí)行的操作]
? ? ? ?例:00 19 * * * python /root/spider/test.py每天19:00執(zhí)行python /root/spider/test.py 注意一定要是絕對(duì)路徑
圖摘自思否
常用符號(hào):
星號(hào)(*):代表所有可能的值,如month字段為星號(hào),則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作。
逗號(hào)(,):可以用逗號(hào)隔開的值指定一個(gè)列表范圍,例如,“1,2,5,7,8,9”
中杠(-):可以用整數(shù)之間的中杠表示一個(gè)整數(shù)范圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時(shí)間的間隔頻率,例如“0-23/2”表示每兩小時(shí)執(zhí)行一次。
以下是幾個(gè)例子:
? ? ? ?1、每分鐘執(zhí)行一次: * * * * * command
? ? ? ?2、每一小時(shí)執(zhí)行一次 :00 * * * * command(精確時(shí)間點(diǎn)) or * */1 * * * command ( / 表示頻率)
? ? ? ?3、每小時(shí)的15和30分各執(zhí)行一次 15,45 * * * * command(, 表示并列)
? ? ? ?4、在每天上午 8- 11時(shí)中間每小時(shí) 15 ,45分各執(zhí)行一次:15,45 8-11 * * * command (- 表示范圍)
? ? ? ?5、每個(gè)星期一的上午8點(diǎn)到11點(diǎn)的第3和第15分鐘執(zhí)行:3,15 8-11 * * 1 command
? ? ? ?6、每隔兩天的上午8點(diǎn)到11點(diǎn)的第3和第15分鐘執(zhí)行:3,15 8-11 */2 * * command
二、crontab與scrapy的結(jié)合
? ? ? ?通常運(yùn)行scrapy需要進(jìn)入到該scrapy項(xiàng)目的文件夾下,所以我們不能直接scrapy crawl ……。
例如我需要每天19:00運(yùn)行我部署的某天氣網(wǎng)站的scrapy爬蟲,名為chinaweather:
? ? ? ?1、我們需要先 cd 進(jìn)入到該scrapy項(xiàng)目的路徑下
? ? ? ?2、對(duì)于scrapy需要使用絕對(duì)路徑,如果找不到,可以使用which scrapy找到如:/usr/local/anaconda/bin/scrapy。
? ? ? ?3、這個(gè)scrapy運(yùn)行的時(shí)候會(huì)打印一些日志,我們用>>可以把它統(tǒng)一追加到一個(gè)文件中,方便檢查scrapy是否正常運(yùn)行。 (需要注意的是>是覆蓋重寫,>>是追加操作)
? ? ? ?使用crontab -e 編輯后,即可添加到定時(shí)任務(wù)中:
00 19 * * * cd /root/spider/weather && /usr/local/anaconda/bin/scrapy crawl chinaweather >> /root/spider/weather/weather_history.log
? ? ? ?最后保存退出,就會(huì)顯示任命了新的定時(shí)任務(wù):

