如何在Linux中使用at和crontab命令

2021-10-19 05:25:42 字數 3124 閱讀 8583

經驗豐富的系統運維工程師可以使得linux在無需人為介入的情況下,在指定的時間段自動啟用或停止某些服務或命令,從而實現運維的自動化。儘管我們現在已經有了功能彪悍的指令碼程式來執行一些批處理工作,但是,如果仍然需要在每天凌晨兩點敲擊鍵盤回車鍵來執行這個指令碼程式,這簡直太痛苦了(當然,也可以訓練您的小貓在半夜按下回車鍵)。接下來,將向大家講解如何設定伺服器的計畫任務服務,把週期性、規律性的工作交給系統自動完成。

長期性計畫任務:每週一的凌晨3點25分把/home/wwwroot目錄打包備份為backup.tar.gz。

顧名思義,一次性計畫任務只執行一次,一般用於滿足臨時的工作需求。我們可以用at命令實現這種功能,只需要寫成「at 時間」的形式就可以。如果想要檢視已設定好但還未執行的一次性計畫任務,可以使用「at -l」命令;要想將其刪除,可以用「atrm 任務序號」。在使用at命令來設定一次性計畫任務時,預設採用的是互動式方法。例如,使用下述命令將系統設定為在今晚23:30分自動重啟**服務。

[root@linuxprobe ~]# at 23:30at > systemctl restart httpdat > 此處請同時按下ctrl+d來結束編寫計畫任務job 3 at mon apr 27 23:30:00 2015[root@linuxprobe ~]# at -l3 mon apr 27 23:30:00 2016 a root
《以上**可複製貼上,可往左滑》

如果想挑戰一下難度更大但簡捷性更高的方式,可以把管道符(任意門)放到兩條命令之間,讓at命令接收前面echo命令的輸出資訊,以達到通過非互動式的方式建立計畫一次性任務的目的。

[root@linuxprobe ~]# echo "systemctl restart httpd" | at 23:30job 4 at mon apr 27 23:30:00 2015[root@linuxprobe ~]# at -l3 mon apr 27 23:30:00 2016 a root4 mon apr 27 23:30:00 2016 a root
《以上**可複製貼上,可往左滑》

如果我們不小心設定了兩個一次性計畫任務,可以使用下面的命令輕鬆刪除其中乙個:

[root@linuxprobe ~]# atrm 3[root@linuxprobe ~]# 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@linuxprobe ~]# crontab -eno crontab for root - using an empty onecrontab: installing new crontab[root@linuxprobe ~]# 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@linuxprobe ~]# whereis rmrm: /usr/bin/rm /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz[root@linuxprobe ~]# crontab -ecrontab: installing new crontab[root@linuxprobe ~]# 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中使用at和crontab命令。 以上就是良許教程網為各位朋友分享的linux相關知識。

如何在C 中使用WebService

將他解壓後,進入到資料夾 gsoap 2.8.18 gsoap 2.8 gsoap bin win32 裡面有2個我們要用到的exe,wsdl2h.exe和soapcpp2.exe,如果缺少乙個typemap.dat,則從gsoap 2.8.18 gsoap 2.8 gsoap下拷貝進來,最後就可以...

如何在 C 中使用 RabbitMQ

rabbitmq 是乙個非常流行的,開源的,使用erlang語言編寫的框架,通常在電信級平台中作為訊息中介軟體使用,rabbitmq實現了高階的amqp協議用於實現程序間,應用程式間,伺服器之間的訊息互動,而且它還有乙個非常?的特性,你可以使用自定義外掛程式來擴充套件rabbitmq的功能,而且它還...

如何在 C 中使用 Attribute

attribute 在 c 中是乙個非常強大的特性,它能夠給你的程式集新增元資料資訊。attribute 實際上是乙個物件,它可以與以下元素中的任何乙個相關聯 程式集 類 方法 委託 列舉 事件 字段 介面 屬性和結構,它會在這些物件上做資訊宣告,當程式執行之後,你可以通過反射來獲取關聯到這些物件上...