需求
兩種場景
1. 在某個指定時間執行某項任務。(明天早上檢查磁盤狀態)
2. 週期性執行某項任務。(每天早上備份日誌)
分析
- 讓程指定時間運行某些任務,提高自己的工作效率,避免人工登錄機器去運行,特別是有程序依賴時,比如說有些統計任務依賴於某些程序執行完畢,設置at命令則不用再處理;
- 機器週期性執行某些任務,用於機器維護、程序監控或數據備份及清理。
一次性任務
使用at命令,依賴於atd服務。
at工作方式
- 使用at命令,將任務寫入/var/spool/at/目錄內。atd服務訪問該目錄。
權限控制
- 如果含有/etc/at.allow文件,則只有在該文件中的用戶才能使用at。
- 如果不含有/etc/at.allow文件,但含有/etc/at.deny文件,則只有不在該文件中的用戶才能使用at。
- 如果不含有/etc/at.allow文件和/etc/at.deny文件,則只有root用戶才能使用at。
命令 | 用途 | 示例 | 備註 |
---|---|---|---|
at now + 5 minutes[enter] … [Ctrl+D] | 創建任務 | at now + 10 minutes at> cat .vimrc > /home/work/orage at> <EOT> |
|
atq | 查看任務 | 結果: 3 2017-02-06 17:36 a root | 第一列數據爲任務id,第二列數據爲時間,最後一列爲創建者 |
atrm id | 將第id個任務刪除 | atrm 3 |
週期性命令
使用crontab命令,依賴於crond服務。
crontab工作方式
- 使用crontab命令,將任務寫入/var/spool/cron/目錄內。cron服務問該目錄。
權限控制
- 如果含有/etc/cron.allow文件,則只有在該文件中的用戶才能使用crontab。
- 如果不含有/etc/cron.allow文件,但含有/etc/cron.deny文件,則只有不在該文件中的用戶才能使用crontab。
- 如果不含有/etc/cron.allow文件和/etc/cron.deny文件,則只有root用戶才能使用crontab。
例行任務級別
- /etc/crontab 系統級別,可配置路徑和郵箱對象。
還有/etc/cron.daily /etc/cron.hourly /etc/cron.monthly /etc/cron.weekly 四個週期性執行目錄可以放置任務。 - /etc/cron.d/* 程序級別
- /var/spool/cron/* 單用戶個性化
- /etc/crontab 系統級別,可配置路徑和郵箱對象。
命令 | 用途 | 示例 | 備註 |
---|---|---|---|
crontab -e | 創建任務 | crontab -e | |
crontab -l | 查看任務 | crontab -l | |
crontab -r | 刪除所有任務 | crontab -r | |
-u username參數 | 指定執行任務的用戶 |
- crontab每行參數設定
http://linux.vbird.org/linux_basic/0430cron.php#whatiscron” title=”” />
其它
- 某項服務deamon運行狀態查看/操作:/etc/init.d/deamon status/start/stop/restart
- 某項服務deamon是否預設啓動設置:chkconfig daemon on/off
- 系統所有服務查看:service –status-all
總結
主要是複習下LINUX系統at和crontab兩個命令,旨在於多有意識使用這兩個命令提高工作效率。