一、定義:指根據設定的時間自動執行規定的程序;
二、兩種方式:(1)例行性的,每隔必定的週期要來辦的事項;(2)突發性的,此次作完之後就沒有的那一種,例如計算機大降價等;
三、使用指令:安全
(1)at:處理僅執行一次就結束排程的指令。
a. 執行前提是必須有服務atd支持:
/etc/init.d/atd status 查看狀態
/etc/init.d/atd start 開啓服務
/etc/init.d/atd stop 關閉服務
/etc/init.d/atd restart 重啓服務
chkconfig atd on **設置開機啓動bash
b. at的運做方式:執行at指令後,這個工做以文本的指令方式寫入/var/spool/at/,等待atd服務取用或執行。 spa
c. 安全考慮,並非全部人都是at工做排程,除非你承認的帳號。具體列管可利用/etc/at.allow和/etc/at.deny兩個檔案,若是/etc/at.allow不存在。
/etc/at.allow 寫在這個檔案中的使用者纔可以使用at
/etc/at.deny 寫在這個檔案中的使用者不可使用atrest
d. 實際運做:
eg. 使用:
例1:
at now +5minutes
at>/bin/mail root -s "testing at job" < /root/.bashrc //執行文件
at> <EOF> //Ctrl + D
例2:
at now +5minutes
at>echo "Hello" > /dev/tty1 //能夠在終端機上看到顯示,若是不加則須要到mailbox中查看
查看:at -l 等價於 atq
刪除:at -d 等價於 atrm //取消一個在at排程中的工做
e. batch:系統有空才進行的背景任務,利用at進行指令下達。
例如:機房停電在 2009/3/17 23:00 關機,但若當時系統負載過高,則暫緩執行,操做以下:
batch 23:00 2009-3-17
at> sync
at> sync
at> shutdown -h now
at> <EOT>
job 6 at 2009-03-17 23:00
f. at有點:
1.脫機繼續工做的任務 ==> 聯機後下達at命令就馬上脫機,直接交給系統的atd服務程序來接管,免除斷網困擾。
2.某個突發事件致使你必需要進行某項工做時這個at就很好用了。
(2)crontab:設定的工做將會一直循環進行,循環間隔時間爲分鐘、小時、每週、每個月或每一年,由系統服務cron來控制。
a. 使用指令crontab操做,亦可編輯/etc/crontab支持;
crontab -u //僅root可操做,幫其餘用戶創建、移除工做排程
crontab -e //編輯crontab
crontab -l //查看crontab
crontab -r //移除全部的crontab工做排程,若是僅移除一項,則使用-e去編輯;
例子:
crontab -e
# 此時會迚入 vi 癿編輯畫面讓您編輯工做!注意到,每項工做都是一行。
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分 時 日 月 周 |<==============指令串========================>|
// *星號:表明任什麼時候刻都接受
// ,逗號:表明分隔時段的意思,例如 0 3,6 * * * command 表明3和6都適用
// -減號:表明一段時間範圍內,例如8 點到 12 點乊間癿每小時癿 20 分都迚行一項工做:20 8-12 * * * command
// /n斜線: n 表明數字,亦便是『每隔 n 單位間隔』的意思,例如每五分鐘執行一次,則:*/5 * * * * command
:wq 保存
例題:倘若你的女友生日是 5 月 2 日,你想要在 5 月 1 日的23:59 發一封信給他,這封信的內容已經寫在 /home/dmtsai/lover.txt 內了,該如何迚行?
答:
直接下達 crontab -e 後,編輯成爲:
59 23 1 5 * mail kiki < /home/dmtsai/lover.txt
那樣癿話,每一年 kiki 都會收到你的這封信喔!(固然囉,信的內容就要每一年變一變啦!)
例題:假如每五分鐘須要執行 /home/dmtsai/test.sh 一次,又該如何?
答:一樣使用 crontab -e 迚入編輯,*/5 * * * * /home/dmtsai/test.sh
b. 爲了安全性,限制使用者使用crontab,使用的限制數據有:
/etc/cron.allow:將可使用 crontab 的帳號寫入其中,若不在這個檔案內的使用者則不可以使用;
/etc/cron.deny:將不可使用 crontab 的帳號寫入其中,若未記錄到這個檔案當中的使用者,就可使用。
注意:以優先級來講, /etc/cron.allow 比 /etc/cron.deny 要優先, 而判斷上面這兩個檔案只選擇一個來限制而已,所以,建議你只要保留一個便可。事件
4.系統的配置文件:/etc/crontab
a. 對系統的例行性任務進行操做,須要編輯/etc/crontab檔案,純文本檔,須要root身份來進行編輯(注意,這裏不須要crontab -e管理,crontab -e實際上是/usr/bin/crontab執行檔),cron服務最低偵測限制是分鐘,因此cron每分鐘會讀取一次/etc/crontab和/var/spool/cron內的數據內容,因此只須要編輯完/etc/crontab檔並存儲好後,cron的設定就會自動執行了。crontab
b. crontab是讀到內存當中的,因此在修改完/etc/crontab後,可能並不會立刻執行,故需重啓crond服務。操做指令:/etc/init.d/crond restart內存