Linux/Centos 計劃任務

在 Linux/Centos 下面, 計劃任務有兩種方式

1) 定期性維護工作,比如每天或每月的排程, 使用 crontab 命令

2) 一次性的維護工作, 使用 at 命令

下面分別演示這兩條命令, 達到學習/掌握的目的


一) crontab 命令

#crontab -u username <-l, -r, -e>

-u username: 指定帳戶
-r 刪除用戶的任務
-e 編輯用戶的任務
-l 顯示用戶的任務

新建計劃任務有兩種方法:

1) 編輯文件 /etc/crontab

執行 # cat /etc/crontab


計劃任務的格式如下:

SHELL:指定shell環境(此處默認為bash shell)
PATH:指定命令程序的路徑
MAILTO:電子郵件通知用戶
HOME:指定執行命令或腳本時使用的主目錄
5個星號按順序依次表示為:每小時第xx分鍾、每天第xx小時、每月第xx天、年第xx月、星期幾
user-name:表示執行命令的用戶
command:表示要執行的命令
比如:
5 * * * * root ls 表示每小時的第5分鍾以root身份執行ls
30 5 * * * root ls 表示每天的 5:30以root身份執行ls
30 6 * * 1 root ls 表示每個星期一的 6:30以root身份執行ls
其中command有一批量派發的表達方式:
5 * * * * root run-parts /etc/cron.daily 表示每5分鍾執行一次目錄 /etc/cron.daily 下的所有可執行文件


編輯 /etc/crontab 文件, 直接添加一行 05 11 * * * root bash /var/log/tinyproxy/backup.sh

設置每天 11:05 以 root 身份執行 /var/log/tinyproxy/backup.sh


補充:

1) 使用此種方法添加的計劃任務後,使用 crontab -l 參數無法查看


2)使用命令添加

輸入命令 #crontab -u root -e 會自動跳到文件 /var/spool/cron/root 的編輯畫面

添加一行: 10 9 * * * bash /var/log/tinyproxy/backup.sh 後保存 (每天9:10執行腳本backup.sh)

輸入以下兩條命令都可以查看root用戶的計劃任務

#cat /var/spool/cron/root       (用 crontab -e 命令新建的任務會保存到 /var/spool/cron 目錄下以用戶名命令的文件中)

#crontab -u root -l         (使用 -l 參數查看 root 用戶的計劃任務)



補充:

1) 重啟 cron 的命令:

#/etc/rc.d/init.d/crond restart

2) 新建的腳本文件需要執行權限

#chmod +x filename


二) at 命令

at 命令只能建立一次性的任務, 如果有多個任務則按時間順序執行, 形成一個任務隊列,隊列可以被顯示或刪除,當任務被執行後,

就被會刪除,將不會被重復執行。

1) 新建任務

#at -f /var/log/tinyproxy/backup.sh 18:00 2015-06-08

任務內容:命令來源於文件 /var/log/tinyproxy/backup.sh

任務時間:2015年6月8日 18:00, 如果省略日期則默認為當天


執行完成後,提示信息為 job 5, 表示任務編號為 5, 當任務隊列數為0時,新建任務編號為 1, 依次累加


2) 查看任務

#atq



3) 刪除任務

#atrm <編號>


刪除編號為5的任務後, 再使用 atq 命令查看結果


補充:

1)重啟服務

/etc/init.d/atd restart

2)允許執行at命令的白/黑名單成員設置

首先尋找 /etc/at.allow 文件, 如果存在,則只允許 at.allow 中的用戶才能執行at命令 (白名單機制)

如果 /etc/at.allow 文件不存在,則繼續尋找 at.deny 文件,如果存在, 則禁止at.deny文件中的用戶使用at命令 (黑名單機制)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章