您好,登錄后才能下訂單哦!
這篇文章的內(nèi)容主要圍繞在Linux中如何使用at和crontab命令在指定時(shí)間計(jì)劃任務(wù)服務(wù)程序進(jìn)行講述,文章內(nèi)容清晰易懂,條理清晰,非常適合新手學(xué)習(xí),值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!
經(jīng)驗(yàn)豐富的系統(tǒng)運(yùn)維工程師可以使得Linux在無需人為介入的情況下,在指定的時(shí)間段自動啟用或停止某些服務(wù)或命令,從而實(shí)現(xiàn)運(yùn)維的自動化。盡管我們現(xiàn)在已經(jīng)有了功能彪悍的腳本程序來執(zhí)行一些批處理工作,但是,如果仍然需要在每天凌晨兩點(diǎn)敲擊鍵盤回車鍵來執(zhí)行這個(gè)腳本程序,這簡直太痛苦了(當(dāng)然,也可以訓(xùn)練您的小貓?jiān)诎胍拱聪禄剀囨I)。接下來,將向大家講解如何設(shè)置服務(wù)器的計(jì)劃任務(wù)服務(wù),把周期性、規(guī)律性的工作交給系統(tǒng)自動完成。
計(jì)劃任務(wù)分為一次性計(jì)劃任務(wù)與長期性計(jì)劃任務(wù),大家可以按照如下方式理解。
顧名思義,一次性計(jì)劃任務(wù)只執(zhí)行一次,一般用于滿足臨時(shí)的工作需求。我們可以用at命令實(shí)現(xiàn)這種功能,只需要寫成“at 時(shí)間”的形式就可以。如果想要查看已設(shè)置好但還未執(zhí)行的一次性計(jì)劃任務(wù),可以使用“at -l”命令;要想將其刪除,可以用“atrm 任務(wù)序號”。在使用at命令來設(shè)置一次性計(jì)劃任務(wù)時(shí),默認(rèn)采用的是交互式方法。例如,使用下述命令將系統(tǒng)設(shè)置為在今晚23:30分自動重啟網(wǎng)站服務(wù)。
[root@liangxu ~]# at 23:30at > systemctl restart httpdat > 此處請同時(shí)按下Ctrl+d來結(jié)束編寫計(jì)劃任務(wù)job 3 at Mon Apr 27 23:30:00 2015[root@liangxu ~]# at -l3 Mon Apr 27 23:30:00 2016 a root
如果想挑戰(zhàn)一下難度更大但簡捷性更高的方式,可以把管道符(任意門)放到兩條命令之間,讓at命令接收前面echo命令的輸出信息,以達(dá)到通過非交互式的方式創(chuàng)建計(jì)劃一次性任務(wù)的目的。
[root@liangxu ~]# echo "systemctl restart httpd" | at 23:30job 4 at Mon Apr 27 23:30:00 2015[root@liangxu ~]# at -l3 Mon Apr 27 23:30:00 2016 a root4 Mon Apr 27 23:30:00 2016 a root
如果我們不小心設(shè)置了兩個(gè)一次性計(jì)劃任務(wù),可以使用下面的命令輕松刪除其中一個(gè):
[root@liangxu ~]# atrm 3[root@liangxu ~]# at -l4 Mon Apr 27 23:30:00 2016 a root
如果我們希望Linux系統(tǒng)能夠周期性地、有規(guī)律地執(zhí)行某些具體的任務(wù),那么Linux系統(tǒng)中默認(rèn)啟用的crond服務(wù)簡直再適合不過了。創(chuàng)建、編輯計(jì)劃任務(wù)的命令為“crontab -e”,查看當(dāng)前計(jì)劃任務(wù)的命令為“crontab -l”,刪除某條計(jì)劃任務(wù)的命令為“crontab -r”。另外,如果您是以管理員的身份登錄的系統(tǒng),還可以在crontab命令中加上-u參數(shù)來編輯他人的計(jì)劃任務(wù)。
在正式部署計(jì)劃任務(wù)前,請先念一下口訣“分、時(shí)、日、月、星期 命令”。這是使用crond服務(wù)設(shè)置任務(wù)的參數(shù)格式。需要注意的是,如果有些字段沒有設(shè)置,則需要使用星號(*****)占位。
使用crond設(shè)置任務(wù)的參數(shù)格式
使用crond設(shè)置任務(wù)的參數(shù)字段說明
字段 | 說明 |
---|---|
分鐘 | 取值為0~59的整數(shù) |
小時(shí) | 取值為0~23的任意整數(shù) |
日期 | 取值為1~31的任意整數(shù) |
月份 | 取值為1~12的任意整數(shù) |
星期 | 取值為0~7的任意整數(shù),其中0與7均為星期日 |
命令 | 要執(zhí)行的命令或程序腳本 |
假設(shè)在每周一、三、五的凌晨3點(diǎn)25分,都需要使用tar命令把某個(gè)網(wǎng)站的數(shù)據(jù)目錄進(jìn)行打包處理,使其作為一個(gè)備份文件。我們可以使用crontab -e命令來創(chuàng)建計(jì)劃任務(wù)。為自己創(chuàng)建計(jì)劃任務(wù)無需使用-u參數(shù),具體的實(shí)現(xiàn)效果的參數(shù)如crontab -l命令結(jié)果所示:
[root@liangxu ~]# crontab -eno crontab for root - using an empty onecrontab: installing new crontab[root@liangxu ~]# crontab -l25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
需要說明的是,除了用逗號(,)來分別表示多個(gè)時(shí)間段,例如“8,9,12”表示8月、9月和12月。還可以用減號(-)來表示一段連續(xù)的時(shí)間周期(例如字段“日”的取值為“12-15”,則表示每月的12~15日)。以及用除號(/)表示執(zhí)行任務(wù)的間隔時(shí)間(例如“*/2”表示每隔2分鐘執(zhí)行一次任務(wù))。
如果在crond服務(wù)中需要同時(shí)包含多條計(jì)劃任務(wù)的命令語句,應(yīng)每行僅寫一條。例如我們再添加一條計(jì)劃任務(wù),它的功能是每周一至周五的凌晨1點(diǎn)鐘自動清空/tmp目錄內(nèi)的所有文件。尤其需要注意的是,在crond服務(wù)的計(jì)劃任務(wù)參數(shù)中,所有命令一定要用絕對路徑的方式來寫,如果不知道絕對路徑,請用whereis命令進(jìn)行查詢,rm命令路徑為下面輸出信息中加粗部分。
[root@liangxu ~]# whereis rmrm: /usr/bin/rm /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz[root@liangxu ~]# crontab -ecrontab: installing new crontab[root@liangxu ~]# crontab -l25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot0 1 * * 1-5 /usr/bin/rm -rf /tmp/*
最后,再來啰嗦幾句在工作中使用計(jì)劃服務(wù)的注意事項(xiàng)。
在crond服務(wù)的配置參數(shù)中,可以像Shell腳本那樣以#號開頭寫上注釋信息,這樣在日后回顧這段命令代碼時(shí)可以快速了解其功能、需求以及編寫人員等重要信息。
計(jì)劃任務(wù)中的“分”字段必須有數(shù)值,絕對不能為空或是*號,而“日”和“星期”字段不能同時(shí)使用,否則就會發(fā)生沖突。
Linux是一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng),使用Linux能運(yùn)行主要的Unix工具軟件、應(yīng)用程序和網(wǎng)絡(luò)協(xié)議。
感謝你的閱讀,相信你對“在Linux中如何使用at和crontab命令在指定時(shí)間計(jì)劃任務(wù)服務(wù)程序”這一問題有一定的了解,快去動手實(shí)踐吧,如果想了解更多相關(guān)知識點(diǎn),可以關(guān)注億速云網(wǎng)站!小編會繼續(xù)為大家?guī)砀玫奈恼拢?/p>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。