at任務
單次定時執行任務
at命令:at [option] TIME
u 常用選項:
-V 顯示版本信息:
-l: 列出指定隊列中等待運行的作業;相當於atq
-d: 刪除指定的作業;相當於atrm
-c: 查看具體作業任務
-f /path/from/somefile:從指定的文件中讀取任務
-m:當任務被完成之後,將給用戶發送郵件,即使沒有標準輸出
u 注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶
u TIME:定義出什麼時候進行 at 這項任務的時間
HH:MM [YYYY-mm-dd]
noon, midnight, teatime(4pm)
tomorrow
now+#{minutes,hours,days, OR weeks}
u執行方式:
1)交互式 2)輸入重定向 3)at –f 文件
uat隊列存放在/var/spool/at目錄中
u/etc/at.{allow,deny}控制用戶是否能執行at任務
白名單:/etc/at.allow 默認不存在,只有該文件中的用戶才能執行at命令
黑名單:/etc/at.deny 默認存在,拒絕該文件中用戶執行at命令,而沒有在
at.deny 文件中的使用者則可執行
如果兩個文件都不存在,只有 root 可以執行 at 命令
例如,
週期性計劃任務cron
命令及程序包
確保服務運行:
CentOS 7: systemctl status crond
CentOS 6: service crond status
系統cron任務:系統維護作業
在/etc/crontab文件中設置
其中本身帶有配置信息的使用規則:
第一位*代表每分鐘,可取值0-59,例如取值5則表示每小時的05分開始執行
第二位*代表每小時,可取值0-23,例如取值1則表示每天的1點(AM)
第三位*代表每月的哪一號,可取值1-31
第四位*代表一年的哪一月份,可取值1-12
第五位*代表星期幾,可取值(0-6)星期天是0
如果所在位數是*則代表,每xx時間執行,所有都是*則代表每分鐘執行
例如,
下圖第一個任務表示 6月5日14點5分已root身份運行free -m >> /data/memstat.log
第二個任務表示每個星期二的14點5分已root身份運行free -m >> /data/memstat.log
用戶cron任務:
因爲這裏是root執行crontab -e所以這裏表示root用戶每10分鐘執行一次後面的任務
crontab命令定義
每個用戶都有專用的cron任務文件: /var/spool/cron/USERNAME
crontab命令: crontab [-u user] [-l | -r | -e] [-i] -l: 列出所有任務
-e: 編輯任務
-r: 移除所有任務
-i:同-r一同使用,以交互式模式移除指定任務
-u user: 僅root可運行,指定用戶管理cron任務
控制用戶執行計劃任務: /etc/cron.{allow,deny}
crontab -e 命令
at和crontab的區別
at | crontab | |
一次性作業使用 | 重複性作業使用crontab Create | |
Create | at time | crontab -e |
List | at -l | crontab -l |
Details | at -c jobnum | N/A |
Remove | at -d jobnum | crontab -r |
Edit | N/A | crontab -e |
其他注意事項:
沒有被重定向的輸出會被郵寄給用戶
根用戶能夠修改其它用戶的作業
crontab的日誌信息:/var/log/cron*