at crontab anacron的基本使用

2022-07-16 15:54:13 字數 4046 閱讀 7760

linux的任務排程機制主要分為兩種:

1. 執行一次:將在某個特定的時間執行的任務排程 at 

2. 執行多次: crontab

3.關機後恢復尚未執行的程式 anacron、

①atat命令用於在指定時間執行命令。at允許使用一套相當複雜的指定時間的方法。它能夠接受在當天的hh:mm(小時:分鐘)式的時間指定。假如該時間已過去,那麼就放在第二天執行。當然也能夠使用midnight(深夜),noon(中午),teatime(飲茶時間,一般是下午4點)等比較模糊的 詞語來指定時間。使用者還能夠採用12小時計時制,即在時間後面加上am(上午)或pm(下午)來說明是上午還是下午。 也能夠指定命令執行的具體日期,指定格式為month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必須跟在指定時間的後面。

上面介紹的都是絕對計時法,其實還能夠使用相對計時法,這對於安排不久就要執行的命令是很有好處的。指定格式為:now + count time

-unitsnow就是當前時間,time-units是時間單位,這裡能夠是minutes(分鐘)、hours(小時)、days(天)、weeks(星期)。count是時間的數量,究竟是幾天,還是幾小時,等等。更有一種計時方法就是直接使用today(今天)、tomorrow(明天)來指定完成命令的時間。

at(選項)(引數)

-f:指定包含具體指令的任務檔案;

-q:指定新任務的佇列名稱;

-l:顯示待執行任務的列表;

-d:刪除指定的待執行任務;

-m:任務執行完成後向使用者傳送e-mail。

例,
三天後的下午 5 點鐘執行/bin/ls

[root@localhost ~]# at 5pm+3 days

at> /bin/ls

at> job 7 at 2013-01-08 17:00

②crontab

crontab命令

被用來提交和管理使用者的需要週期性執行的任務,與windows下的計畫任務類似,當安裝完成作業系統後,缺省會安裝此服務工具,並且會自動啟動crond程序,crond程序每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。

crontab(選項)(引數)

-e:編輯該使用者的計時器設定;

-l:列出該使用者的計時器設定;

-r:刪除該使用者的計時器設定;

-u《使用者名稱》:指定要設定計時器的使用者名稱。

linux下的任務排程分為兩類:系統任務排程使用者任務排程

系統任務排程:系統週期性所要執行的工作,比如寫快取資料到硬碟、日誌清理等。在/etc目錄下有乙個crontab檔案,這個就是系統任務排程的配置檔案。

/etc/crontab檔案包括下面幾行:

shell=/bin/bash

path=/sbin:/bin:/usr/sbin:/usr/bin

mailto=""home=/

# run-parts

51 * * * * root run-parts /etc/cron.hourly

24 7 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

前四行是用來配置crond任務執行的環境變數,第一行shell變數指定了系統要使用哪個shell,這裡是bash,第二行path變數指定了系統執行命令的路徑,第三行mailto變數指定了crond的任務執行資訊將通過電子郵件傳送給root使用者,如果mailto變數的值為空,則表示不傳送任務執行資訊給使用者,第四行的home變數指定了在執行命令或者指令碼時使用的主目錄。

crontab檔案的含義:使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個字段代表一項設定,它的格式共分為六個字段,前五段是時間設定段,第六段是要執行的命令段,格式如下:

minute   hour   day   month   week   command

順序:分 時 日 月 周

其中:

在以上各個欄位中,還可以使用以下特殊字元:

例項:

1 * * * * * date >> /home/mytest/log.txt  #每分鐘執行一次

23,15 * * * * date >> /home/mytest/log.txt #每小時的第3和第5分鐘執行一次

33,15

8-11 * * * date >> /home/mytest/log.txt #每隔兩天的上午8點到11點的第3和第15分鐘執行

43,15

8-11 */2 * * date >> /home/mytest/log.txt #每個星期一的上午8點到11點的第3和第15分鐘執行 510

1 * * 6,0

date >> /home/mytest/log.txt #每週

六、週日的1:10執行一次

6 * */1 * * * date >> /home/mytest/log.txt #每小時執行一次

注意:

如果crontab不重定向輸出,並且crontab所執行的命令有輸出內容的話,是一件非常危險的事情。因為該輸出內容會以郵件的形式傳送給使用者,內容儲存在郵件檔案/var/spool/mail/$user。   如果命令執行比較頻繁(如每分鐘一次),或者命令輸出內容較多,會使這個郵件檔案不斷追加內容,檔案越來越大。而郵件檔案一般存放在根分割槽,根分割槽一般相對較小,所以會造成根分割槽寫滿而無法登入伺服器。

③anacron

anacron並不能取代cron去執行某項任務,而是以天為單位或者是在啟動後立刻進行anacron的動作,它會去偵測停機期間應該進行但是並沒有進行的crontab任務,並將該任務執行一遍後,anacron就會自動停止了。

anacron命令的語法如下:

(1)-s開始連續的執行各項工作,會一句時間記錄當的資料判斷是否進行。
(2)-f強制進行,而不去判斷時間登入檔的時間戳。
(3)-n立即進行未進行的任務,而不延遲等待時間。
(4)-u僅公升級時間記錄當的時間戳,不進行任何工作。
而anacron的配置檔案是/etc/anacrontab,而它的很多內容則是在/var/spool/anacron裡面儲存。
當anacron下達anacron  -s  cron.daily時,它會有如下的步驟:
(1)由/etc/anacrontab分析到cron.daily這項工作名稱的天數為一天。
(2)由/var/spool/anacron/cron.daily取出最近一次執行anacron的時間戳。
(3)把取出的時間戳與當前的時間戳相比較,如果差異超過了一天,那麼就準備進行命令。
(4)若準備進行命令,根據/etc/anacrontab的配置,將延遲65分鐘。
(5)延遲時間後,開始執行後續命令,也就是run-parts  /etc/cron.daily這串命令。
(6)執行完畢後,anacron程式結束。

iOS MBProgressHUD的基本使用

方式1.直接在view上show hud mbprogresshud showhudaddedto self.view animated yes retain hud.delegate self 常用的設定 小矩形的背景色 hud.color uicolor clearcolor 這兒表示無背景 顯...

scanf gets getchar的基本使用

scanf 是在c語言中最常用的輸入函式,它需要我們嚴格按照要求進行輸入,除非你用對scanf 使用了正規表示式 對於scanf 當它遇到空格 回車 或者tab鍵時,都會自動停止輸入,剩下的內容逗留在緩衝區中,所以如果需要輸入字串,不推薦使用它。關於正規表示式 是個集合的標誌,特指讀入此集合所限定的...

PHP Elasticsearch的基本使用方法

一 連線elasticsearch 1 elasticsearch開啟之後,可以直接通過檢視基本資訊。2 將composer vendor下的檔案複製到ot thinkphp library vendor elasticsearch目錄下。3 連線elasticsearch,public es 初始...