CentOS下如何實行計劃任務
添加時間:2019-8-31 18:22:53
添加:
思海網絡
CentOS下實行計劃任務的方法
1、循環執行的計劃任務
linux下面有atd和crond兩種計劃任務,其中,atd服務使用的at命令只能執行一次,而crond服務使用的crontab定義的命令,是循環作用的,所以crond才符合我們的要求。
crontab支持兩種狀態:一、直接編寫計劃任務;二、使用目錄的方式,放在目錄里面的都會定時執行。
2、可以使用的用戶
默認情況下,系統中可以登陸的用戶,都可以使用crontab定義計劃任務。不過,可以通過下面兩個文件限制權限:
引用
◆/etc/cron.allow:
將可以使用 crontab 的賬號寫入其中,若不在這個檔案內的使用者則不能使用 crontab;
◆/etc/cron.deny:
將不可以使用 crontab 的賬號寫入其中,若未記錄到這個檔案當中的使用者,就可以使用 crontab 。
※類似TCPWrapper定義的方式。
3、直接使用crontab編輯計劃任務:
命令:
crontab [-u username] [-l|-e|-r]
參數:
-u :通過-u幫其它使用者建立/移除 crontab;
-e :編輯 crontab 的內容
-l :查看 crontab 的內容
-r :移除 crontab 的所有內容(是全部的內容,如果只是刪除某個,用-e編輯即可)
內容格式:
* * * * * 命令
前面的五個*號,表示分、時、日、月、周,如:
代表意義 分鐘 小時 日期 月份 周
數字范圍 0-59 0-23 1-31 1-12 0-7
*號代表任何時間都接受的意思,任意。
*號之間用空格分開,如果是一段范圍,用-號連接;如果是隔開幾個時間,用,號表示。
另外,命令必須是編寫計劃任務的用戶有權限執行的,并且最后用絕對路徑。
例如:
#crontab -e
59 23 1 5 * mail linuxing < /home/test.txt
每在5月1日,23點59分就把/home/test.txt的內容作為郵件發給linuxing用戶
*/5 * * * * /opt/test.sh
每5分鐘就執行一次/opt/test.sh腳本
0 3,6 * * * /usr/local/bin/test.sh
每在3點和6點整點都執行/usr/local/bin/test.sh命令
0 8-12 * * * /root/backup.sh
8 點到 12 點之間的每小時的0分都執行/root/backup.sh
4、基于目錄的方式執行計劃任務
對于系統的計劃任務,已經在/etc/crontab里面定義,采用的就是基于目錄的方式。系統會定時讀取該文件,并根據里面的定義執行命令。
可以使用vi直接編寫/etc/crontab文件,其中格式如下:
#cat /etc/crontab
SHELL=/bin/bash #使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin #預定義的PATH路徑
MAILTO=root #出現問題發Email給該用戶
HOME=/ #家目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly #每小時的目錄
02 4 * * * root run-parts /etc/cron.daily #每天
22 4 * * 0 root run-parts /etc/cron.weekly #每周日
42 4 1 * * root run-parts /etc/cron.monthly #每個月1號
分 時 日 月 周 執行者身份 命令
可以看到前面的五個參數的定義和直接編輯計劃任務是一樣的,增加了執行的用戶定義和run-parts參數。
run-parts后面跟的是目錄名稱,例如:/etc/cron.hourly,表示每小時01分就到/etc/cron.hourly目錄中執行目錄下的所有可執行文件;當然,目錄是可以自己定義的。
如果你需要增加系統的計劃任務,只需要在對應的目錄添加執行文件即可,例如:我需要在每天都執行updatedb的操作,則我只需要把/usr/bin/updatedb的執行命令鏈接到/etc/cron.daily目錄就可以了。
※同樣的,如果不需要使用目錄的方式,也可以使用如下的方式:
02 01 * * * root /root/test.sh
也就是沒有了run-parts,后面就直接跟命令的絕對路徑
5、注意事項
◆如果使用crontab編輯計劃任務或直接修改/etc/crontab文件后,計劃任務沒有生效,可能需要重啟一下crond服務:service crond restart
◆當編寫/etc/crontab文件的時候,不要漏了指定執行計劃任務的用戶,這是和直接用crontab -e編輯不同的。
◆某用戶(如root)用crontab -e編輯的計劃任務存放在/var/spool/cron/root,這個文件下。但最好不要直接編輯他,因為crond執行的時候,會在/tmp目錄中建立需要的臨時文件,直接編輯會對此有影響,甚至出錯。
◆cron執行的每一項工作都會被紀錄到/var/log/cron這個日志文件中,可以從這個文件查看命令執行的狀態。
關鍵字:CentOS、實行、計劃任務
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解