本文主要記錄: 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 注意一定要是絕對路徑
常用符號:
星號(*):代表所有可能的值棚蓄,如month字段為星號,則表示在滿足其它字段的制約條件后每月都執(zhí)行該命令操作稍算。
逗號(,):可以用逗號隔開的值指定一個(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、對于scrapy需要使用絕對路徑外永,如果找不到伯顶,可以使用which scrapy
找到如:/usr/local/anaconda/bin/scrapy砾淌。
? ? ? ?3汪厨、這個(gè)scrapy運(yùn)行的時(shí)候會打印一些日志,我們用>>
可以把它統(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
? ? ? ?最后保存退出前鹅,就會顯示任命了新的定時(shí)任務(wù):