在 linux 下有兩類任務管理, 分別是一次性和周期性。 一次性是 at
和 batch
,周期性又分為系統(tǒng)任何和用戶任務。
一次性任務:
at [選項] time
at
命令有交互式方式和批處理兩種方式。交互式是用戶輸入 at [option] time
后等待用戶再光標處繼續(xù)輸入要執(zhí)行的命令,然后用 ctrl+d
提交任務。批處理就要用到 -f
了,是用戶先將要執(zhí)行的命令寫入文件,再用 -f
指定該文件。與 batch 區(qū)別:batch 不能指定時間,而是選擇用戶系統(tǒng)的空閑時間來執(zhí)行。
周期性任務:
執(zhí)行原理:不管是系統(tǒng)任務還是用戶任務都是由守護進程 crond
讀取用戶定義文件來執(zhí)行的。系統(tǒng)任務的文件時 /etc/crontab
,用戶任務文件是 /var/spool/cron/username
。
系統(tǒng)任務:
任務定義格式:每行定義一個任務,格式為 ***** user command
時間格式:* - . /
是可以用的符號。*
代表該位所有可取值,-
代表在這一區(qū)間連續(xù)取值,.
代表這區(qū)間的離散取值,/#
表示在某區(qū)間每隔#執(zhí)行一次任務
crontab
命令,可以使用的參數有 -e
調用 EDITOR
中的編輯器來編輯,-u
指定用戶,-l
查看任務,-r
刪除 crontab
文件。例子:
***** for i in {1...4};do /bin/echo "hello";sleep 1;done
at
執(zhí)行。在文件中寫 while true;do ls / sleep 10;done
crontab
外,還有一個命令是對 crontab
的補充,anacron
。它用于檢測 crontab
中是否有任務錯過了上次執(zhí)行的時間,若有則讓該任務在開機后的某個時間執(zhí)行。