Linux系統計劃任務有兩種:A、一次性任務;B、定時循環任務。
一次性任務:at命令。at的安裝包名字就是at,可以使用命令"yum install at"進行安裝.安裝完成后,啟用atd服務就可以運行at命令了.運行格式為:at [option] TIME
OPTION:
-V 顯示版本信息:
-l: 列出指定隊列中等待運行的作業;相當于atq
-d: 刪除指定的作業;相當于atrm
-c: 查看具體作業任務
-f /path/from/somefile:從指定的文件中讀取任務(要執行的命令)
-m:當任務被完成之后,將給用戶發送郵件,即使沒有標準輸出
注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶
TIME:定義出什么時候進行 at 這項任務的時間
HH:MM [YYYY-mm-dd]
noon, midnight, teatime( 4pm)tomorrow
now+#{minutes,hours,days, OR weeks}
HH:MM 02:00
在今日的 HH:MM 進行,若該時刻已過,則明天此時執行任務
HH:MM YYYY-MM-DD 04:00 2016-09-20
規定在某年某月的某一天的特殊時刻進行該項任務
HH:MM[am|pm] [Month] [Date]
04pm March 17
17:20 tomorrow
HH:MM[am|pm] + number [minutes|hours|days|weeks]
在某個時間點再加幾個時間后才進行該項任務
now + 5 minutes
04pm + 3 days
注意:選項-t也可以指定時間:at -t TIME。其格式為[[CC]YY]MMDDhhmm。
at隊列存放在/var/spool/at目錄中.創建一個計劃任務,2分鐘后發一個廣播:
at命令可以通過修改配置文件來指定用戶有權限或者沒有權限執行。配置文件為/etc/at.deny和/etc/at.allow。其中,at.allow中的用戶被允許執行at命令,at.deny文件中的用戶沒有權限執行at命令。兩個文件如果都不存在,則只有管理員才能執行at命令。如果兩個文件都有,at.allow的優先級高。
定時循環任務:crontab命令,運行格式為:crontab [-u user] [-l | -r | -e]
-l:列出當前的計劃任務列表
-r:刪除當前計劃任務
-e:創建或者編輯計劃任務
使用命令"crontab -e"編輯計劃任務,編輯的格式為:
總共7個字段:分、小時、天、月、星期、用戶、命令。例如要在每個月的第一天執行一個計劃任務,可以使用"crontab -e"編輯如下字段:"* * 1 * * reboot"。然后保存。其中,"*"代表任何時刻(天,小時,分鐘,月),也可以指定具體的時間,連續的時間用"-"連接(1-10),離散的數用","隔開(1,4,10),也可以使用"/#"表示每#(分鐘,小時,月,天)執行一次。時間也可以使用特殊的形式:
@reboot Run once after reboot.
@yearly 0 0 1 1 *
@annually 0 0 1 1 *
@monthly 0 0 1 * *
@weekly 0 0 * * 0
@daily 0 0 * * *
@hourly 0 * * * *
編輯完成后就可以使用命令"crontab -l"命令查看:
該命令是讓每月的第一天重啟系統。當用戶使用 crontab 創建工作后,該項工作會被到/var/spool/cron/里面,而且是以賬號最為判別的,crontab執行的每一項工作都會被記錄到
/var/log/cron 這個日志文件中。
/etc/crontab這個文件是系統默認會定時執行的系統任務,crond服務會每隔一分鐘讀取/etc/crontab與/varspool/cron里面的內容。文件內容如下:
SHELL=/bin/bash:使用的shell,
PATH=……:定義路徑到變量。
MAILTO=root:若有額外STDOUT,以 email 將數據發送給誰,可以改成你的email地址,以便接收任務的執行信息。
其中比crontab -e 命令多了一項,便是用戶名稱了,因為用戶執行命令會以用戶身份生成配置文件,而這個文件中若是填入任務的話,系統就需要指定用戶的身份了。
并且其中還支持以目錄來規劃任務,可以將可執行文件放在一個目錄中,然后再命令處填寫 run-parts(有空格)然后接上目錄,即可借助run-parts這個腳本的輔助,來規劃目錄執行了。
其中所有的輸出會以email形式,發送預設的賬號,所以不必要的輸出可以重定向給/dev/null 避免垃圾郵件。
其中日、月、周不可同時存在,若是同時存在,系統默認執行第一個讀取到的時間做循環。
crontab的任務都是定時循環執行,若是那個時刻處于關機狀態,那么任務就無法執行了,為了彌補這個問題,就有了anacron。其能夠將為能運行的crontab工作在開機之后執行。
aracron也是基于crontab來運行的,因此aracron運行的時間通常有兩個,一個是系統開機期間運行,一個是寫入crontab 的調度之中,這樣才能夠在特定的時間分析系統中未運行的crontab 工作。
RANDOM_DELAY=45表示啟動后延時時間;
START_HOURS_RANGE=3-22表示執行的時間段
下面的字段分別表示執行的次數、執行的延時、作業標識符、命令
和at命令相似,它也有兩個配置文件cron.deny和cron.allow,作用一樣。
原創文章,作者:王更生,如若轉載,請注明出處:http://www.www58058.com/61038