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