- 資訊首頁(yè) > 互聯(lián)網(wǎng) > 經(jīng)驗分享 >
- 詳解Linux系統服務(wù)器下crontab的使用與注意事項
crontab是一個(gè)用于設置周期性被執行的指令。其守護進(jìn)程為crond. crontab分為兩種配置模式,一種為用戶(hù)級的crontab,一種為系統級的crontab,這里我們分開(kāi)來(lái)談。
用戶(hù)級crontab
用戶(hù)使用新建循環(huán)型工作調度時(shí),使用的crontab命令,crontab -e所有用戶(hù)都可以使用,普通用戶(hù)也只能為自己設置計劃任務(wù)。然后自動(dòng)寫(xiě)入/var/spool/cron/usename
用戶(hù)控制文件
/etc/cron.allow
:
將可以使用crontab的用戶(hù)寫(xiě)入,僅該文件內的用戶(hù)可以使用crontab,相當于白名單
/etc/cron.deny
:
將禁止使用crontab的用戶(hù)寫(xiě)入,僅該文件內的用戶(hù)禁止使用crontab,相當于黑名單
其中/etc/cron.allow
優(yōu)先級大于/etc/cron.deny
,為避免混淆,建議二者僅使用一個(gè)。
命令
crontab [-u usename] [-l|
-e|-r] 參數:
-u:只有root才能進(jìn)行這個(gè)任務(wù),也即幫其他用戶(hù)新建/刪除crontab工作調度
-e: 調用vi編輯crontab的工作內容
-l: 列出crontab的工作內容
-r: 刪除所有crontab的工作內容。
語(yǔ)法
# .---------------- 分鐘 (0 - 59)
# | .------------- 小時(shí) (0 - 23)
# | | .---------- 日期 (1 - 31)
# | | | .------- 月份 (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- 周幾 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |
# * * * * * 命令
語(yǔ)法與系統級crontab很相似,不同點(diǎn)在于此處不需要指定執行用戶(hù),而系統級crontab(/etc/crontab)
中需要。
舉例如下:
*/10 * * * * /home/test.sh #每隔10分鐘就以當前用戶(hù)執行一次/home/test.sh腳本
0 2 * * * /home/test.sh #每天2點(diǎn)
0 5,17 * * * /home/test.sh #每天5點(diǎn)、17點(diǎn)
0 17 * * sun /home/test.sh #每周日17點(diǎn)
0 4,17 * * sun,mon /home/test.sh#每周一、周日@reboot /home/test.sh #系統重啟時(shí)
這里推薦一個(gè)在線(xiàn)小工具:
系統級crontab
系統級crontab一般用于系統的例行性任務(wù),這種方法更加方便與直接直接給其他用戶(hù)設置計劃任務(wù),而且還可以指定執行shell等。配置文件為/etc/crontab
,該文件僅root用戶(hù)能夠編輯。
編輯/etc/crontab
默認內容如下:
SHELL=/bin/bash 這里是指定使用哪種shell接口 PATH=/sbin:/bin:/usr/sbin:/usr/bin 這里指定文件查找路徑 MAILTO=root 如果有額外的STDOUT,以email將數據送給誰(shuí),可以指定系統用戶(hù),也可以指定email地址,如alliot@iots.vip
# For details see man 4 crontabs# Example of job definition:
# .---------------- 分鐘 (0 - 59)
# | .------------- 小時(shí) (0 - 23)# | | .---------- 日期 (1 - 31)
# | | | .------- 月份 (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- 周幾 (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * 用戶(hù)名 命令
即:
分 時(shí) 日 月 周 執行用戶(hù) 任務(wù)命令
比如我要添加一個(gè)計劃任務(wù),每隔10分鐘就以root身份執行一次/home/test.sh
腳本,則在后面添加:
*/10 * * * * root /home/test.sh
這里注意,不要漏掉執行者root(用戶(hù)級的crontab中不需要指定執行者),否則會(huì )在/var/log/cron
日志中出現”ERROR (getpwnam() failed)
”錯誤,計劃任務(wù)無(wú)法正常運行。
重啟服務(wù)
一般來(lái)說(shuō)Linux下的crontab會(huì )自動(dòng)幫我們每分鐘重新讀取一次 /etc/crontab
的例行工作事項,但是出于某些原因或者是其他的Unix系統中,由于crontab是讀到內存當中的,所以栽修改完 /etc/crontab
之后,可能并不會(huì )馬上執行,這時(shí)候需要重啟crontab服務(wù)。
這里以CentOS為例:
service crond start //啟動(dòng)服務(wù)
service crond stop //關(guān)閉服務(wù)
service crond restart //重啟服務(wù)
service crond reload //重載配置
service crond status //服務(wù)狀態(tài)
如果是CentOS 7則:
systemctl restart crond.service //重啟服務(wù)
systemctl start crond.service //啟動(dòng)服務(wù)
systemctl stop crond.service //停止服務(wù)
systemctl reload crond.service //重載配置
systemctl status crond.service //服務(wù)狀態(tài)
其他注意事項
取消不需要的輸出
當執行結果或者執行的選項中有輸出的數據時(shí),該數據會(huì )通過(guò)mail發(fā)送給MAILTO指定的賬號,若某一個(gè)調度一直出錯,同時(shí)mail服務(wù)出現問(wèn)題(事實(shí)上我根本就沒(méi)開(kāi)這個(gè)服務(wù)),將會(huì )產(chǎn)生大量的文件于 /var/spool/clientmqueue/
,所以最好是將crontab里面的命令后面加上> /dev/null 2>&1
檢查日志
日志保存在 /var/log/cron
中
語(yǔ)法區別
來(lái)源鏈接:https://www.zyhot.com/article/6524.html
本站聲明:網(wǎng)站內容來(lái)源于網(wǎng)絡(luò ),如有侵權,請聯(lián)系我們,我們將及時(shí)處理。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站