Linux 計劃任務 就是讓系統在某個特定的時間自動完成某些特定的工作。
一般來說 Linux 的計劃任務大體分為兩類,一類是在未來的某個時間一次性的執行某個任務,類似於定時炸彈,炸過一次就沒有了。另一類是在未來的某個時間周期性的執行某個任務,這個就像鬧鐘,每天的早上在固定時間喊你起床。
對於一次性的任務來說, Linux 上主要使用 at , batch 來幫助實現,對於周期性的任務主要有cron , anacron 來實現,下面我們來一一介紹 一次性的計劃任務命令 at , batch
at :
功能說明:在指定時間執行命令
語 法: at [-ldf]
-l 查看隊列中等待執行的隊列,相當於 atq
-d 刪除等待執行的隊列。相當於 atrm
-f 從文件輸入將要執行的命令
Ctrl+d 退出
bash
不需要指定時間,而是自己在系統的使用率比較低的時間,讓命令執行,其他和 at 命令相似
周期性命令 cron
周期性
cron 本身是一種服務,進程名叫 crond #service crond status
crontab 中保存用戶定義的任務計劃。分為兩類:系統 crontab /etc/crontab
cron.daily ,
cron.hourly
cron.monthly,
cron.weekly
用戶 crontab /var/spool/cron/USERNAME
crontab 文件格式 :
字段 取值
1.MIN 0-59
2.HOUR 0-23
3.DAY 1-31
4.MONTH 1-12
5.WEEK 0-7
6.COMMAND
*: 對應時間域上的所有有效取值
- :對應時間域上的連續時間取值 8-18
,:對應時間域上的離散時間取值 8 , 18
/ :對應時間域的每多久一次進行取值 */8 表示每 8 分鐘一次,
周和日月,一般不同時使用。
anacrontab
cron 的 acl
/etc/cron.deny
/etc/cron.allow
如果兩個文件都不存在,只有管理員才能定義任務計劃
如果只有 cron.deny 。黑名單,僅拒絕列在 cron.deny 文件中的用戶
如果只有 cron.allow 白名單 , 僅接受 allow 中的用戶
如果兩個都存在,此時 deny 被忽略,同只有 cron.allow