濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 詳解Linux下crontab的使用與注意事項(xiàng)

詳解Linux下crontab的使用與注意事項(xiàng)

熱門(mén)標(biāo)簽:網(wǎng)絡(luò)電話外呼系統(tǒng)開(kāi)發(fā) 滴滴急救中心地圖標(biāo)注 艾澤拉斯地圖標(biāo)注 淘寶辦理400電話是多少 申請(qǐng)400電話收費(fèi)標(biāo) 北海智能電銷(xiāo)機(jī)器人公司 福州語(yǔ)音電銷(xiāo)機(jī)器人招商 菏澤自動(dòng)電銷(xiāo)機(jī)器人公司 外呼線路隨意切換嗎

crontab是一個(gè)用于設(shè)置周期性被執(zhí)行的指令。其守護(hù)進(jìn)程為crond. crontab分為兩種配置模式,一種為用戶級(jí)的crontab,一種為系統(tǒng)級(jí)的crontab,這里我們分開(kāi)來(lái)談。

用戶級(jí)crontab

用戶使用新建循環(huán)型工作調(diào)度時(shí),使用的crontab命令,crontab -e所有用戶都可以使用,普通用戶也只能為自己設(shè)置計(jì)劃任務(wù)。然后自動(dòng)寫(xiě)入/var/spool/cron/usename

用戶控制文件

/etc/cron.allow :
將可以使用crontab的用戶寫(xiě)入,僅該文件內(nèi)的用戶可以使用crontab,相當(dāng)于白名單

/etc/cron.deny :
將禁止使用crontab的用戶寫(xiě)入,僅該文件內(nèi)的用戶禁止使用crontab,相當(dāng)于黑名單
其中/etc/cron.allow優(yōu)先級(jí)大于/etc/cron.deny,為避免混淆,建議二者僅使用一個(gè)。

命令

crontab [-u usename] [-l|-e|-r] 
參數(shù): 
-u:只有root才能進(jìn)行這個(gè)任務(wù),也即幫其他用戶新建/刪除crontab工作調(diào)度 
-e: 調(diào)用vi編輯crontab的工作內(nèi)容 
-l: 列出crontab的工作內(nèi)容 
-r: 刪除所有crontab的工作內(nèi)容。

語(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ǔ)法與系統(tǒng)級(jí)crontab很相似,不同點(diǎn)在于此處不需要指定執(zhí)行用戶,而系統(tǒng)級(jí)crontab(/etc/crontab)中需要。

舉例如下:

*/10 * * * * /home/test.sh   #每隔10分鐘就以當(dāng)前用戶執(zhí)行一次/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      #系統(tǒng)重啟時(shí)

這里推薦一個(gè)在線小工具:在線生成cron表達(dá)式

系統(tǒng)級(jí)crontab

系統(tǒng)級(jí)crontab一般用于系統(tǒng)的例行性任務(wù),這種方法更加方便與直接直接給其他用戶設(shè)置計(jì)劃任務(wù),而且還可以指定執(zhí)行shell等。配置文件為/etc/crontab,該文件僅root用戶能夠編輯。

編輯/etc/crontab

默認(rèn)內(nèi)容如下:

SHELL=/bin/bash  這里是指定使用哪種shell接口 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 這里指定文件查找路徑 
MAILTO=root             如果有額外的STDOUT,以email將數(shù)據(jù)送給誰(shuí),可以指定系統(tǒng)用戶,也可以指定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
# | | | | |
# * * * * * 用戶名 命令

即:

分 時(shí) 日 月 周 執(zhí)行用戶 任務(wù)命令

比如我要添加一個(gè)計(jì)劃任務(wù),每隔10分鐘就以root身份執(zhí)行一次/home/test.sh腳本,則在后面添加:

*/10 * * * * root /home/test.sh

這里注意,不要漏掉執(zhí)行者root(用戶級(jí)的crontab中不需要指定執(zhí)行者),否則會(huì)在/var/log/cron日志中出現(xiàn)”ERROR (getpwnam() failed)”錯(cuò)誤,計(jì)劃任務(wù)無(wú)法正常運(yùn)行。

重啟服務(wù)

一般來(lái)說(shuō)Linux下的crontab會(huì)自動(dòng)幫我們每分鐘重新讀取一次 /etc/crontab 的例行工作事項(xiàng),但是出于某些原因或者是其他的Unix系統(tǒng)中,由于crontab是讀到內(nèi)存當(dāng)中的,所以栽修改完 /etc/crontab 之后,可能并不會(huì)馬上執(zhí)行,這時(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)

其他注意事項(xiàng)

取消不需要的輸出

當(dāng)執(zhí)行結(jié)果或者執(zhí)行的選項(xiàng)中有輸出的數(shù)據(jù)時(shí),該數(shù)據(jù)會(huì)通過(guò)mail發(fā)送給MAILTO指定的賬號(hào),若某一個(gè)調(diào)度一直出錯(cuò),同時(shí)mail服務(wù)出現(xiàn)問(wèn)題(事實(shí)上我根本就沒(méi)開(kāi)這個(gè)服務(wù)),將會(huì)產(chǎn)生大量的文件于 /var/spool/clientmqueue/ ,所以最好是將crontab里面的命令后面加上> /dev/null 2>&1

2>:重定向錯(cuò)誤。
2>&1:把錯(cuò)誤重定向到輸出要送到的地方。即把上述命令的執(zhí)行結(jié)果重定向到 /dev/null ,即拋棄,同時(shí),把產(chǎn)生的錯(cuò)誤也拋棄。

檢查日志

日志保存在 /var/log/cron 中

語(yǔ)法區(qū)別

  • crontab -e命令會(huì)檢查語(yǔ)法,而vim編輯 /etc/crontab 則不會(huì),這里注意的是,crontab -e不需要寫(xiě)執(zhí)行者用戶名,而 /etc/crontab 需要指定。
  • 執(zhí)行路徑必須使用絕對(duì)路徑,否則可能無(wú)法正常執(zhí)行。
  • 周與日、月不能共存,即你可以分別以周或者是日、月為單位進(jìn)行循環(huán),但不可指定“幾月幾號(hào)且為星期幾”的模式工作。

參考資料

鳥(niǎo)哥的Linux私房菜

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

標(biāo)簽:資陽(yáng) 賀州 延安 三沙 滄州 亳州 丹東 混顯

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《詳解Linux下crontab的使用與注意事項(xiàng)》,本文關(guān)鍵詞  詳解,Linux,下,crontab,的,使用,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《詳解Linux下crontab的使用與注意事項(xiàng)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于詳解Linux下crontab的使用與注意事項(xiàng)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    集安市| 平和县| 鄂尔多斯市| 盐亭县| 萨迦县| 云安县| 祥云县| 保山市| 安达市| 垣曲县| 商城县| 沙田区| 亳州市| 桐城市| 布尔津县| 卢氏县| 江城| 上虞市| 武隆县| 绥德县| 涞水县| 平定县| 望江县| 阜宁县| 通许县| 宣恩县| 新安县| 沈阳市| 宣武区| 贵阳市| 新津县| 凤城市| 麻阳| 丹巴县| 石狮市| 凉城县| 东城区| 安吉县| 宁阳县| 旅游| 黄骅市|