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 的工作情況其實是這樣的:
crontab命令
例題:假若你的女朋友生日是 5 月 2 日,你想要在 5 月 1 日的 23:59 發一封信給他,這封信的內容已經寫在 /home/dmtsai/lover.txt 內了,該如何進行?
答:
直接下達 crontab -e 之后,編輯成為:
五個數字后面接的是 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 這個檔案里面支援兩種下達指令的方式,一種是直接下達指令, 一種則是以目錄來規劃,例如:
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 這個指令。
crontab命令
例題:假若你的女朋友生日是 5 月 2 日,你想要在 5 月 1 日的 23:59 發一封信給他,這封信的內容已經寫在 /home/dmtsai/lover.txt 內了,該如何進行?
答:
直接下達 crontab -e 之后,編輯成為:
- 59 23 1 5 * mail kiki <
/home/dmtsai/lover.txt
五個數字后面接的是 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 的目錄,將要每隔五分鐘執行的‘可執行檔’都寫到該目錄下, 就可以讓系統每五分鐘執行一次該目錄下的所有可執行檔。