中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

在Linux中使用crontab時需要注意哪些問題

發布時間:2021-03-22 16:38:56 來源:億速云 閱讀:219 作者:Leah 欄目:服務器

在Linux中使用crontab時需要注意哪些問題?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

crontab是一個用于設置周期性被執行的指令。其守護進程為crond. crontab分為兩種配置模式,一種為用戶級的crontab,一種為系統級的crontab,這里我們分開來談。

用戶級crontab

用戶使用新建循環型工作調度時,使用的crontab命令,crontab -e所有用戶都可以使用,普通用戶也只能為自己設置計劃任務。然后自動寫入/var/spool/cron/usename

用戶控制文件

/etc/cron.allow :
將可以使用crontab的用戶寫入,僅該文件內的用戶可以使用crontab,相當于白名單

/etc/cron.deny :
將禁止使用crontab的用戶寫入,僅該文件內的用戶禁止使用crontab,相當于黑名單
其中/etc/cron.allow優先級大于/etc/cron.deny,為避免混淆,建議二者僅使用一個。

命令

crontab [-u usename] [-l|-e|-r] 
參數: 
-u:只有root才能進行這個任務,也即幫其他用戶新建/刪除crontab工作調度 
-e: 調用vi編輯crontab的工作內容 
-l: 列出crontab的工作內容 
-r: 刪除所有crontab的工作內容。

語法

# .---------------- 分鐘 (0 - 59) 
# | .------------- 小時 (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
# | | | | |
# * * * * * 命令

語法與系統級crontab很相似,不同點在于此處不需要指定執行用戶,而系統級crontab(/etc/crontab)中需要。

舉例如下:

*/10 * * * * /home/test.sh   #每隔10分鐘就以當前用戶執行一次/home/test.sh腳本
0 2 * * * /home/test.sh     #每天2點 
0 5,17 * * * /home/test.sh   #每天5點、17點
0 17 * * sun /home/test.sh   #每周日17點
0 4,17 * * sun,mon /home/test.sh#每周一、周日
@reboot /home/test.sh      #系統重啟時

這里推薦一個在線小工具:在線生成cron表達式

系統級crontab

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

編輯/etc/crontab

默認內容如下:

SHELL=/bin/bash  這里是指定使用哪種shell接口 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 這里指定文件查找路徑 
MAILTO=root             如果有額外的STDOUT,以email將數據送給誰,可以指定系統用戶,也可以指定email地址,如alliot@iots.vip
# For details see man 4 crontabs
# Example of job definition:
# .---------------- 分鐘 (0 - 59) 
# | .------------- 小時 (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
# | | | | |
# * * * * * 用戶名 命令

即:

分 時 日 月 周 執行用戶 任務命令

比如我要添加一個計劃任務,每隔10分鐘就以root身份執行一次/home/test.sh腳本,則在后面添加:

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

這里注意,不要漏掉執行者root(用戶級的crontab中不需要指定執行者),否則會在/var/log/cron日志中出現”ERROR (getpwnam() failed)”錯誤,計劃任務無法正常運行。

重啟服務

一般來說Linux下的crontab會自動幫我們每分鐘重新讀取一次 /etc/crontab 的例行工作事項,但是出于某些原因或者是其他的Unix系統中,由于crontab是讀到內存當中的,所以栽修改完 /etc/crontab 之后,可能并不會馬上執行,這時候需要重啟crontab服務。

這里以CentOS為例:

service crond start  //啟動服務 
service crond stop   //關閉服務 
service crond restart //重啟服務 
service crond reload  //重載配置 
service crond status  //服務狀態

如果是CentOS 7則:

systemctl restart crond.service //重啟服務 
systemctl start crond.service  //啟動服務 
systemctl stop crond.service  //停止服務 
systemctl reload crond.service //重載配置 
systemctl status crond.service //服務狀態

其他注意事項

取消不需要的輸出

當執行結果或者執行的選項中有輸出的數據時,該數據會通過mail發送給MAILTO指定的賬號,若某一個調度一直出錯,同時mail服務出現問題(事實上我根本就沒開這個服務),將會產生大量的文件于 /var/spool/clientmqueue/ ,所以最好是將crontab里面的命令后面加上> /dev/null 2>&1

2>:重定向錯誤。
2>&1:把錯誤重定向到輸出要送到的地方。即把上述命令的執行結果重定向到 /dev/null ,即拋棄,同時,把產生的錯誤也拋棄。

檢查日志

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

語法區別

  • crontab -e命令會檢查語法,而vim編輯 /etc/crontab 則不會,這里注意的是,crontab -e不需要寫執行者用戶名,而 /etc/crontab 需要指定。

  • 執行路徑必須使用絕對路徑,否則可能無法正常執行。

  • 周與日、月不能共存,即你可以分別以周或者是日、月為單位進行循環,但不可指定“幾月幾號且為星期幾”的模式工作。

看完上述內容,你們掌握在Linux中使用crontab時需要注意哪些問題的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宜兴市| 三门县| 林芝县| 潜山县| 乾安县| 肃南| 奎屯市| 博乐市| 潮安县| 金坛市| 日土县| 历史| 永新县| 大竹县| 馆陶县| 鹤峰县| 平武县| 横山县| 吕梁市| 五莲县| 如皋市| 闽侯县| 钦州市| 陇南市| 江城| 襄垣县| 托克逊县| 平阳县| 盐城市| 岚皋县| 武穴市| 玉田县| 宜宾县| 溧水县| 咸宁市| 苏尼特右旗| 宜春市| 出国| 怀化市| 曲沃县| 永顺县|