Linux 計劃任務整理

非常可樂發表於2017-08-04

注:crontab 對應的服務 crond

許可權
/etc/cron.allow:
將可以使用 crontab 的賬號寫入其中,若不在這個檔案內的使用者則不可使用 crontab;

/etc/cron.deny:
將不可以使用 crontab 的賬號寫入其中,若未記錄到這個檔案當中的使用者,就可以使用
crontab

/etc/cron.allow 比 /etc/cron.deny 要優先

/var/spool/cron/ 執行日誌

[root@www ~]# crontab [-u username] [-l|-e|-r]
選項與引數:
-u :只有 root 才能進行這個任務,亦即幫其他使用者建立/移除 crontab 工作
排程;
-e :編輯 crontab 的工作內容
-l :查閱 crontab 的工作內容
-r :移除所有的 crontab 的工作內容,若僅要移除一項,請用 -e 去編輯。
範例一:用 dmtsai 的身份在每天的 12:00 發信給自己
[dmtsai@www ~]$ crontab -e
此時會進入 vi 的編輯畫面讓您編輯工作!注意到,每項工作都是一行。
0 12 * mail dmtsai -s “at 12:00” < /home/dmtsai/.bashrc
分 時 日 月 周 |<==============指令串========================>|


*(星號)
代表任何時刻都接受的意思!

,(逗號)
代表分隔時段的意思。舉例來說,如果要下達的工作是 3:00 與 6:00 時,就會是:
0 3,6 * command
時間引數還是有五欄,不過第二欄是 3,6 ,代表 3 與 6 都適用!

-(減號)
代表一段時間範圍內,舉例來說, 8 點到 12 點之間的每小時的 20 分都進行一項工
作:
20 8-12 * command
仔細看到第二欄變成 8-12 喔!代表 8,9,10,11,12 都適用的意思!

/n(斜線)
那個 n 代表數字,亦即是『每隔 n 單位間隔』的意思,例如每五分鐘進行一次,則:
/5 * command
很簡單吧!用 * 與 /5 來搭配,也可以寫成 0-59/5 ,相同意思!

====================================================

在 Linux 底下的 crontab 會自動的幫我們每分鐘重新讀取一次 /etc/crontab

Unix 系統中,由於 crontab 是讀到記憶體當中的,所以在你修改完 /etc/crontab 之後,可能並不會馬上執行, 這個時候請

重新啟動 crond『/etc/init.d/crond restart』

anacron 存在的目的就在於我們上頭提到的,在處理非 24 小
時一直啟動的 Linux 系統的 crontab 的執行!所以 anacron 並不能指定何時執行某項任務, 而是以天
為單位或者是在開機後立刻進行 anacron 的動作,他會去偵測停機期間應該進行但是並沒有進行的
crontab 任務,並將該任務執行一遍後,anacron 就會自動停止了。

======================================================
at 另一種執行任務的方式
at 指令碼 跑完一次 結束
at 的執行必須要有 atd 服務的支援,且 /etc/at.deny 為控制是否能夠執行的使用者賬號;

相關文章