劇情介紹
為了提高工作效率避免繁雜的重復(fù)性工作,在linux系統(tǒng)中制定計(jì)劃任務(wù)是日常運(yùn)維工作中必不可少的,因此熟練掌握l(shuí)inux計(jì)劃任務(wù)是每個(gè)it運(yùn)維工程師的必備技能。linux系統(tǒng)計(jì)劃任務(wù)分為兩種:一種是一次性的計(jì)劃任務(wù)(臨時(shí)性的),比如機(jī)房臨時(shí)停電檢修,要對(duì)所有服務(wù)器進(jìn)行數(shù)據(jù)同步后關(guān)機(jī)的操作;二種是周期性的計(jì)劃任務(wù)(循環(huán)重復(fù)),比如每周定時(shí)對(duì)數(shù)據(jù)進(jìn)行備份的操作;現(xiàn)對(duì)這兩種計(jì)劃任務(wù)分別詳述如下:
首先確認(rèn)計(jì)劃任務(wù)服務(wù)是否已正常啟動(dòng):systemctl status atd;systemctl status crond;如果系統(tǒng)中還沒(méi)有安裝計(jì)劃服務(wù)組件請(qǐng)先行安裝,具體安裝方法請(qǐng)?jiān)斠?jiàn)上篇《linux程序安裝和卸載》。
說(shuō)明:以下示例中的#代表其后面的文字是對(duì)命令的解釋說(shuō)明,復(fù)制粘貼命令做測(cè)試時(shí)不要復(fù)制#及其后的文字。
1、atd:一次性計(jì)劃任務(wù);
語(yǔ)法:at [選項(xiàng)] 時(shí)間,在指定時(shí)間執(zhí)行特定的任務(wù);選項(xiàng):-l列出系統(tǒng)上所有用戶(hù)的任務(wù),也可用atq;-d刪除一個(gè)任務(wù),也可用atrm;
時(shí)間格式:
hh:mm在這個(gè)時(shí)間點(diǎn)執(zhí)行任務(wù);
hh:mm yyyy-mm-dd強(qiáng)制規(guī)定在某年某月某日某個(gè)時(shí)刻執(zhí)行該任務(wù);
hh:mm + n[minutes|hours|days|weeks]某個(gè)時(shí)刻后的某個(gè)時(shí)間點(diǎn)執(zhí)行任務(wù);
《例1》:從當(dāng)前起1分鐘后把執(zhí)行命令的時(shí)間寫(xiě)到date.txt文檔;
$at now +1minutes
at> date > date.txt #命令計(jì)劃;
at>
《例2》:定時(shí)執(zhí)行關(guān)機(jī)任務(wù);
$at 23:00 2022-10-10
at>/bin/sync #同步內(nèi)存,保存數(shù)據(jù);
at>/bin/sync
at>/sbin/shutdown -h now #關(guān)機(jī)計(jì)劃;
at>
2、crond:周期性計(jì)劃任務(wù);
在redhat系統(tǒng)中crontab建立計(jì)劃任務(wù),保存路徑/var/spool/cron/賬號(hào);執(zhí)行過(guò)的任務(wù)記錄,會(huì)記錄到/var/log/cron這個(gè)文檔中,也就是cron的日志文件。
語(yǔ)法:crontab [選項(xiàng)],為每個(gè)用戶(hù)維護(hù)周期性的計(jì)劃任務(wù);-u username指定用戶(hù)管理計(jì)劃任務(wù),只有root才能使用;-e編輯crontab任務(wù);-l查看crontab任務(wù);-r移除所有crontab的任務(wù),若僅移除一項(xiàng),使用-e去編輯刪除;
查看crontab語(yǔ)法,cat /etc/crontab:
注:*代表任何時(shí)刻;,代表分割時(shí)段;-代表時(shí)間范圍;/n表示n單位時(shí)間間隔;
特定值:
3****:每小時(shí)的第3分鐘;
34**6:每周6的4點(diǎn)3分;
321**:每月1日的2點(diǎn)3分;
5432*:每年2月3日4點(diǎn)5分;
分割時(shí)段:在時(shí)間點(diǎn)上分割多個(gè)值;
78**6,7:每周6和周日的8點(diǎn)7分;
09,10**1,2:每周1和周2的9點(diǎn)和10點(diǎn);
連續(xù)時(shí)間:
09-17**1-5:周一到周五的每天9點(diǎn)到下午5點(diǎn);
09-21**1-6:周1到周6每天9點(diǎn)到晚上9點(diǎn)(996);
單位時(shí)間間隔:在指定時(shí)間點(diǎn)上定義步長(zhǎng);
*/5****:每5分鐘執(zhí)行一次;
*/1****:每分鐘執(zhí)行一次;
*****:每分鐘執(zhí)行一次;
《例》:crontab -e #編制周期性計(jì)劃;
0 18 * * 5 mail eis < /root/week.txt #周期性把week.txt文件通過(guò)郵件方式發(fā)給用戶(hù)eis;
30 2 * * 2,4,6 /usr/bin/tar -zcvf /root/rootbackup.tar.gz /root/ #周期性把指定目錄下(/root/)所有文件備份打包;
crontab -l查看計(jì)劃任務(wù);
crontab -r刪除計(jì)劃任務(wù);
用crontab -e編制計(jì)劃任務(wù)的編輯器同vim編輯器類(lèi)似,詳細(xì)操作請(qǐng)?jiān)斠?jiàn)上一篇《一文掌握vim編輯器》。