Linux計劃任務管理
前言:在Linux操作系統中,除了用戶即時執行的命令操作以外,還可以配置在指定的時間、指定的日期執行預先計劃好的系統管理任務(如定期備份、定期采集監測數據)。RHEL6系統中默認已安裝了at、cronie軟件包,通過atd和crond這兩個系統服務實現一次性、周期性計劃任務的功能,并分别通過at、crontab命令進行計劃任務設置。
一、at命令
一次性計劃任務
前提條件:對應的系統服務atd必須已經運行
查看atd服務是否運行:/etc/init.d/atd status,若沒有運行,則使用/etc/init.d/atd start開啟服務
服務腳本名稱:/etc/init.d/atd
設置格式:
注:使用at命令設置的計劃任務隻在指定的時間點執行一次,計劃任務的時間、日期必須安排在當前系統的時刻之後,否則将無法正确設置計劃任務,若隻指定時間則表示當天的該時間,若指定日期則表示該日期的當前時間,确認後将進入帶"at>"提示符的任務編輯界面,每行設置一條執行命令,可以依次設置多條語句,最後按Ctrl D組合鍵提交任務即可。所設置的命令操作将在計劃的時間點依次執行。
示例1:
示例2:在當天的21:30時自動關閉當前系統。
二、crontab命令
按照預先設置的時間周期(分鐘、小時、天……)重複執行用戶指定的命令操作
屬于周期性計劃任務
前提條件,對應的系統服務crond必須已經運行(和查看atd服務運行狀态的命令一樣,/etc/init.d/crond status即可)
服務腳本名稱:/etc/init.d/crond
主要設置文件
1.crontab的配置文件和目錄(概念性的東西,了解一下)
crond通過多個目錄和文件設置計劃任務,不同類型的配置文件來設置
1) /etc/crontab——系統任務配置文件
/etc/crontab文件中設置的是維護Linux系統所需的任務,由Linux系統及相關程序在安裝時自動設置,不建議用戶手動修改
圖示:
2) /var/spool/cron/——用戶cron任務的配置文件存放目錄
由用戶自行設置的cron計劃任務将被保存到目錄/var/spool/cron/中,文件名與用戶名相同。
示例:如下圖,root用戶的cron計劃任務保存在配置文件/var/spool/cron/root中
注:crond守護進程會自動檢查/etc/crontab文件、/etc/cron.d/目錄及/var/spool/cron/目錄中的改變,如果發現有配置文件更改,它們就會被載入内存,所以當某個crontab文件改變後并不需要重新啟動crond守護進程就可以使設置生效。
2.使用crontab命令管理用戶的計劃任務
編輯計劃任務:
查看計劃任務:
删除計劃任務:
注:root用戶可以管理指定用戶的計劃任務,普通用戶隻能管理自己的計劃任務
1) 編輯用戶的計劃任務
執行"crontab -e"命令後,将打開計劃任務編輯界面(與vi/vim中的操作相同)。通過該界面用戶可以自行添加具體的任務配置,每行代表一個記錄,每一行任務配置記錄,都包括六個數據字段,分别表示不同的含義。
示例1:每天早上7:50自動開啟sshd服務,22點50時關閉,這個該怎麼寫呢?(如下圖)
如上圖所示:50 7 * * * /sbin/service sshd start這一行的含義如下圖所示
通過這個示例我們可以知道每行記錄=時間周期設置 任務内容(命令),時間周期的設置規則是以"分(分鐘)、時(小時)、日(日期)、月(月份)、周(星期)"的順序來寫的,當使用"*"時表示取值範圍中的任意時間。各個字段的取值範圍如下圖所示:
除了表中的正常的取值範圍外,還有一些特殊符号表示方法
接下來我們再通過一些實例來熟悉一下
示例2:時間周期的寫法(先不寫命令,隻通過寫時間周期來熟悉一下該怎麼寫)
示例3:(root用戶)
要求:
每天早上7:50自動開啟sshd服務,22點50時關閉
每隔5天清空一次FTP服務器公共目錄/var/ftp/pub
每周六的7:30時,重新啟動httpd服務
每周一、三、五的17:30時,打包備份/etc/httpd目錄
圖示:
示例4:(jerry用戶)
要求:每周日晚上23:55時将"/etc/passwd"文件的内容複制到宿主目錄中,保存為pwd.txt文件
圖示:
注:通過上面的這些示例,我們可以看出命令的編輯都使用的是絕對路徑,這是因為因為各條計劃任務在執行時并不需要用戶登錄,所以任務配置記錄中的命令建議使用絕對路徑,以避免因卻少執行路徑而無法執行命令的情況。另外,在設置非每分鐘都執行的任務時,"分鐘"字段也應該填寫一個具體的時間數值,而不要保留默認的"*",否則将會在每分鐘執行一次計劃任務。
剛開始可能會有點懵,也可能我總結的這個邏輯思路不對你們的胃口,但時間周期的編輯規則一定是"分、時、日、月、周",這個得牢記。
2) 查看用戶的計劃任務
crontab命令結合"-l"選項可以查看當前用戶的計劃任務列表,對于root用戶來說,還可以結合"-u"選項查看其他用戶的計劃任務。
圖示:
3) 删除用戶的計劃任務
當需要删除某一條計劃任務時,可以通過"crontab -e"進行編輯(要删哪條,把那行删了就完了);而若要清空某個用戶的所有計劃任務,可以執行"crontab -r"命令。
圖示:
或
到這為止就差不多完了,但其實這也隻是個開始,因為在設置用戶的crontab計劃任務的過程中,由于每一條記錄隻能運行一行命令,難以完成更複雜的系統管理任務操作,因此在實際工作中,當需要按照固定周期運行一些複雜的任務時,通常會将相關命令操作編寫成腳本文件,然後在計劃任務配置中加載該腳本并執行。任重而道遠。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!