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