2024年05月14日使用crontab 在Mac 上部署自啟動(dòng)任務(wù)

背景:蘋果、谷歌的應(yīng)用審核規(guī)則經(jīng)常會(huì)更新,為及時(shí)收到變更通知,最近寫了一個(gè)爬蟲,現(xiàn)在要把這個(gè)爬蟲程序部署到另一臺(tái)Mac電腦上每天8:00、20:00點(diǎn)自動(dòng)執(zhí)行,在網(wǎng)上搜羅了一下,發(fā)現(xiàn)crontab這個(gè)好東西,記錄一下,也分享給大家。

推薦理由

1、crontab 是Mac電腦上系統(tǒng)自帶的工具,因此不需要下載,使用方式也很簡(jiǎn)單,最重要的是設(shè)置好它的定時(shí)規(guī)則 后面再接上我們想要執(zhí)行的指令就行;
2、定時(shí)規(guī)則可以通過(guò)配置自行設(shè)置,不需要在具體任務(wù)內(nèi)部設(shè)置各種定時(shí)器

step1:確認(rèn)電腦中crontab 已運(yùn)行

sudo /usr/sbin/cron start

如果電腦中已經(jīng)運(yùn)行了crontab, 會(huì)有這個(gè)提示
zsh: killed sudo /usr/sbin/cron start

step2:查看當(dāng)前運(yùn)行crontab定時(shí)任務(wù):crontab -l

crontab -l
# 我這臺(tái)Mac剛設(shè)置過(guò)一條自動(dòng)任務(wù),因此顯示:
>0 8,20 * * * cd /Users/xxxxx/Desktop/test && ./App審核規(guī)則爬蟲

setp3:編輯crontab定時(shí)任務(wù): crontan -e

crontan -e
# 鍵盤輸入“i”進(jìn)入編輯模式
0 8,20 * * * cd /Users/xxxx/Desktop/test && ./App審核規(guī)則爬蟲>> /Users/xxxx/Desktop/test/log/log_file.log 2>&1
~                                                                                                                                               
~                                                                                                                                               
~                                                                                                                                                                                                                                                                                                                                                                                   
"/tmp/crontab.gxe0VM2mC3" 1L, 135B

日志重定向
我在結(jié)尾新增了一段指令:

>> /Users/xxxx/Desktop/test/log/log_file.log 2>&1

目的是把App審核規(guī)則爬蟲運(yùn)行日志重定向至指定目錄,不添加這段指令的話,任務(wù)執(zhí)行時(shí),運(yùn)行日志就不那么方便查看

setp4:保存crontab任務(wù)

鍵盤點(diǎn)擊esc退出編輯模式
鍵盤輸入":"進(jìn)入指令模式
鍵盤輸入"wq" 然后回車即可保存

# 當(dāng)然,如果設(shè)置的時(shí)間不對(duì),會(huì)提示錯(cuò)誤,比如把20前加一個(gè)空格
0 8, 20 * * * cd /Users/xxxxx/Desktop/test && ./App審核規(guī)則爬蟲
crontab: installing new crontab
"/tmp/crontab.gxe0VM2mC3":0: bad hour
crontab: errors in crontab file, can't install
Do you want to retry the same edit? 

在保存crontab時(shí),就會(huì)提示 bad hour,刪除空格就可以正常保存
保存成功,會(huì)提示

crontab: installing new crontab

step5:停止crontab定時(shí)任務(wù)

如果需要多個(gè)不同的定時(shí)任務(wù),進(jìn)入crontab 編輯模式后,回車新增一條指令即可。
如果要?jiǎng)h除某個(gè)定時(shí),也可以進(jìn)入編輯模式,刪除那一條指令,也可以直接執(zhí)行crontab -r 刪除所有定時(shí)

crontab -r

其他遇到的問(wèn)題:

1、電腦息屏后,任務(wù)沒(méi)有按時(shí)執(zhí)行

原因:Mac 電腦息屏后,crontab 定時(shí)任務(wù)不執(zhí)行,主要原因是cron 守護(hù)進(jìn)程在 Mac 睡眠模式下會(huì)被暫停。
參考博文:

#解決方案:禁用 Mac 的睡眠模式,確保 cron 守護(hù)進(jìn)程一直運(yùn)行
sudo pmset -a disablesleep 1

2、電腦重啟時(shí),希望任務(wù)執(zhí)行一次

原因:Mac 電腦息屏后,crontab 定時(shí)任務(wù)不執(zhí)行,主要原因是cron 守護(hù)進(jìn)程在 Mac 睡眠模式下會(huì)被暫停。
參考博文:

#解決方案:禁用 Mac 的睡眠模式,確保 cron 守護(hù)進(jìn)程一直運(yùn)行
sudo pmset -a disablesleep 1

常用的一些定時(shí)指令

Mac 自動(dòng)任務(wù) crontab 不執(zhí)行

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容