at : 這個工作僅執行一次就從 Linux 系統中的排程中取消;
cron : 這個工作將持續例行性的作下去!
at命令
既然是工作排程,那么自然要有寫入工作的紀錄檔啰!沒錯啦!
我們可以使用 at
這個指令來幫忙寫入工作紀錄檔,工作紀錄檔預設的放置目錄在 /var/spool/at 底下,在寫入 at
記錄檔后,該工作便進入排程當中并等待執行。 當然啦,要讓 /var/spool/at 目錄底下的工作被實際運作,必須要啟動我們上面提到的 atd
那個服務啦!
不過,并不是所有的人都可以進行 at 工作排程喔!為什么?因為安全的理由啊~
很多主機被所謂的綁架后,最常發現的就是他們的系統當中有很多的怪客程式 (cracker program)
被寫入例行性命令的排程當中了,所以,那些可惡的程式就可能定時或不定時的在你的系統當中工作, 呵呵!所以啰,除非是您認可的帳號,否則先不要讓他們使用 at 吧!
此外,我們可以利用 /etc/at.allow 與 /etc/at.deny 這兩個檔案來進行 at 的使用限制呢! 加上這兩個檔案后, at
的工作情況其實是這樣的:
- 先找尋 /etc/at.allow 這個檔案,寫在這個檔案中的使用者才能使用 at ,沒有在這個檔案中的使用者則不能使用 at (
即使沒有寫在 at.deny 當中 );
- 如果沒有 /etc/at.allow 就尋找 /etc/at.deny 這個檔案,若寫在這個 at.deny 的使用者則不能使用 at
,而沒有在這個 at.deny 檔案中的使用者,就可以使用 at 咯;
- 如果兩個檔案都不存在,那么只有 root 可以使用 at 這個指令。
上面的情況說明了,其實我們只要有 at.deny
這個檔案存在就好了,因為我們假設系統內的帳號都是懂得操作的使用者, 因此,預設讓他們可以任意使用 at 這個好用的東西!這也是系統的預設值。我們的 FC4
預設也是只有 /etc/at.deny 存在,而且該檔案內并未有任何帳號資料!這表示任何人均可使用 at 啦!不過,萬一你不希望有某些使用者使用 at
的話,將那個使用者的帳號寫入 /etc/at.deny 即可! 一個帳號寫一行。
crontab命令
例題:假若你的女朋友生日是 5 月 2 日,你想要在 5 月 1 日的 23:59 發一封信給他,這封信的內容已經寫在
/home/dmtsai/lover.txt 內了,該如何進行?
答:
直接下達 crontab -e 之后,編輯成為:
59 23 1 5 * mail kiki <
/home/dmtsai/lover.txt
那樣的話,每年 kiki
都會收到你的這封信喔!(當然啰,信的內容就要每年變一變啦!)
01 * * * * root run-parts
/etc/cron.hourly:
五個數字后面接的是 root
喔!沒錯,與 crontab -e 的內容是不太一樣的!這個欄位的 root 代表的是‘
執行的使用者身份為
root ’當然啰,你 也可以將這一行改寫成其他的身份哩!而 run-parts 代表后面接的 /etc/cron.hourly 是‘
一個目錄內(/etc/cron.hourly)的所有可執行檔 ’,這也就是說,
每個小時的 01 分,系統會以 root 的身份去 /etc/cron.hourly/
這個目錄下執行所有可以執行的檔案!后面的三行也都是類似的意思!你可以到 /etc/
底下去看看,系統本來就預設了這四個目錄了!你可以將每天需要執行的命令直接寫到 /etc/cron.daily/ 即可,還不需要使用到 crontab -e
的程式呢!方便吧
基本上, /etc/crontab 這個檔案里面支援兩種下達指令的方式,一種是直接下達指令, 一種則是以目錄來規劃,例如:
- 指令型態
01 * * * * dmtsai
mail -s "testing" kiki < /home/dmtsai/test.txt
以 dmtsai
這個使用者的身份,在每小時執行一次 mail 指令。
- 目錄規劃
*/5 * * * * root
run-parts /root/runcron
建立一個 /root/runcron
的目錄,將要每隔五分鐘執行的‘可執行檔’都寫到該目錄下, 就可以讓系統每五分鐘執行一次該目錄下的所有可執行檔。