計(jì)劃任務(wù)
crond 周期性的任務(wù),定點(diǎn)執(zhí)行,只能控制這個(gè)任務(wù)多久運(yùn)行一次,至于是什么任務(wù)與crond無關(guān)
場(chǎng)景:
定期備份重要的文件或數(shù)據(jù)
促銷活動(dòng),準(zhǔn)點(diǎn)開啟搶購(gòu)接口,準(zhǔn)點(diǎn)關(guān)閉搶購(gòu)接口
每分鐘檢測(cè)超時(shí)訂單,超過30分鐘未支付的訂單進(jìn)行取消
每隔5分鐘上各個(gè)電商平臺(tái)刷取訂單信息寫入自己公司的系統(tǒng)中
兩種使用情況:
系統(tǒng)級(jí)別的定時(shí)任務(wù),臨時(shí)文件清理、系統(tǒng)信息采集、日志文件切割
用戶級(jí)別的定時(shí)任務(wù),定時(shí)備份數(shù)據(jù),同步時(shí)間,訂單超時(shí)自動(dòng)取消,按時(shí)間段統(tǒng)計(jì)信息等
圖01
分 時(shí) 日 月 周
* * * * * 表示每分鐘都執(zhí)行
* 5-7 * * * 表示每天5點(diǎn)到7點(diǎn)中的每分鐘都執(zhí)行
0 5-7 * * * 表示每天5點(diǎn)到7點(diǎn)準(zhǔn)點(diǎn)執(zhí)行
0 2 * * 1,3,5 表示每周的一三五的凌晨?jī)牲c(diǎn)準(zhǔn)點(diǎn)進(jìn)行
*/5 * * * * 表示每隔5分鐘執(zhí)行一次
crontab -e 編輯定時(shí)任務(wù)
crontab -l 查看定時(shí)任務(wù)
crontab -u 指定其他用戶
定時(shí)任務(wù)存放位置,將這個(gè)文件備份添加到定期任務(wù)中,避免誤刪
ll /var/spool/cron/USERNAME 的文件,文件名取決于你是什么用戶
如果不小心清除了定時(shí)任務(wù)
查看日志 /var/log/cron拿到所有的任務(wù)
grep "CMD" /var/log/cron | awk -F '(' '{print $3}' | sort |uniq 找到執(zhí)行過的任務(wù)
grep "定時(shí)任務(wù)" /var/log/cron 找到定時(shí)任務(wù)的執(zhí)行時(shí)間和周期
如果不想讓某個(gè)用戶使用crontab
echo "username" >> /etc/cron.deny
crond編寫思路
手動(dòng)執(zhí)行命令,然后保留執(zhí)行成功的結(jié)果
編寫腳本
腳本需要統(tǒng)一路徑
腳本內(nèi)容復(fù)制執(zhí)行成功的命令
腳本執(zhí)行的輸出信息可以重定向至其他位置保留或?qū)懭?dev/null
執(zhí)行腳本
使用bash命令執(zhí)行, 防止腳本沒有增加執(zhí)行權(quán)限 (使用絕對(duì)路徑/usr/bin/bash執(zhí)行)
執(zhí)行腳本成功后,復(fù)制該執(zhí)行的命令,crontab -e以便寫入cron中
編寫計(jì)劃任務(wù)
加上必要的注釋信息, 人、時(shí)間、任務(wù)
設(shè)定計(jì)劃任務(wù)執(zhí)行的周期
粘貼執(zhí)行腳本的命令
調(diào)試計(jì)劃任務(wù)
增加任務(wù)頻率測(cè)試
檢查環(huán)境變量問題
檢查crond服務(wù)日志
計(jì)劃任務(wù)如何調(diào)試
先手動(dòng)執(zhí)行沒問題。
crontab -e 先每分鐘執(zhí)行一下,確認(rèn)可以定時(shí)執(zhí)行
最后調(diào)整為需要執(zhí)行的時(shí)間,進(jìn)行執(zhí)行。
如果使用cron運(yùn)行腳本,請(qǐng)將腳本執(zhí)行的結(jié)果寫入指定日志文件, 觀察日志內(nèi)容是否正常。
命令使用絕對(duì)路徑, 防止無法找到命令導(dǎo)致定時(shí)任務(wù)執(zhí)行產(chǎn)生故障。
通過查看/var/log/cron日志,以便檢查我們執(zhí)行的結(jié)果,方便進(jìn)行調(diào)試。