在 linux 下有兩類任務管理, 分別是一次性和周期性。 一次性是 at 和 batch,周期性又分為系統(tǒng)任何和用戶任務。
一次性任務:
at [選項] timeat 命令有交互式方式和批處理兩種方式。交互式是用戶輸入 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 命令,可以使用的參數(shù)有 -e 調(diào)用 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í)行。