linux定時作業(例行性任務)
linux有兩種定時作業方式:
• at : 這個工作僅執行一次就從 linux 系統中的排程中取消;
• cron : 這個工作將持續例行性的作下去!
at僅執行一次
要使用at進行任務在未來某一時刻僅僅執行一次,必須先開啟服務atd,一般為了安全系統預設atd服務未開啟,使用命令/etc/init.d/atd restart 開啟這個服務。
我們可以利用 /etc/at.allow 與 /etc/at.deny 這兩個檔案來進行 at 的使用限制呢! 加上這兩個檔案後, at 的工作情況其實是這樣的:
1. 先找尋 /etc/at.allow 這個檔案,寫在這個檔案中的使用者才能使用 at ,沒有在這個檔案中的使用者則不能使用 at ( 即使沒有 寫在 at.deny 當中 );
2. 如果沒有 /etc/at.allow 就尋找 /etc/at.deny 這個檔案,若寫在這個 at.deny 的使用者則不能使用 at ,而沒有在這個 at.deny 檔案中的使用者,就可以使用 at 咯;
3. 如果兩個檔案都不存在,那麼只有 root 可以使用 at 這個指令。
開啟服務後就可以用命令at 來進行工作的排程了,這些一次性的命令任務會被寫入資料夾/var/spool/at 下,然後工作就會進入排程狀態等待執行,等任務執行完成後就會從該檔案下將任務移除。利用命令at將任務寫入資料夾/var/spool/at下,at 的具體用法:
好了,讓我們來談一談 at 這個玩意兒的語法吧!
[root@linux ~]# at [-m] time
引數:-m :當 at 的工作完成後,以 email 的方式通知使用者該工作已完成。
time:時間格式,這裡可以定義出『什麼時候要進行 at 這項工作』的時間,格式有:
hh:mm ex> 04:00
hh:mm yyyy-mm-dd ex> 04:00 2005-12-03
強制規定在某年某月的某一天的特殊時刻進行該工作!
hh:mm[am|pm] [month] [date] ex> 04pm december 3
也是一樣,強制在某年某月某日的某時刻進行!
hh:mm[am|pm] + number [minutes|hours|days|weeks]
ex> now + 5 minutes ex> 04pm + 3 days
就是說,在某個時間點『再加幾個時間後』才進行。
範例:範例一:再過五分鐘後,將 /root/.bashrc 寄給 dmtsai 這個使用者
[root@linux ~]# at now + 5 minutes
at> /bin/mail dmtsai -s "testing at job" < /root/.bashrc
at> <==這裡輸入 [ctrl] + d 就會出現 的字樣!代表結束!
job 8 at 2005-09-07 10:47
# 上面這行資訊在說明,第 8 個 at 工作將在 2005/09/07 的 10:47 進行!
範例二:由於機房預計於 2005/09/16 停電,我想要在 2005/09/15 23:00 關機?
[root@linux ~]# at 23:00 2005-09-15
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at>
job 10 at 2005-09-15 23:00
這是我執行的乙個at命令在5min後執行,可以看出/var/spool/at資料夾下檔案的變化
檢視at的定時作業並取消已存在的定時作業
atq顯示所有已設定的定時任務,atrm num 刪除某個序號的定時作業
crontab迴圈執行定時作業
使用指令crontab命令新增迴圈執行的定時作業,和at類似使用這個服務首先需要許可權允許,
• /etc/cron.allow: 將可以使用 crontab 的賬號寫入其中,若不在這個檔案內的使用者則不可使用 crontab;
•/etc/cron.deny: 將不可以使用 crontab 的賬號寫入其中,若未記錄到這個檔案當中的使用者,就可以使用 crontab 。
首先會檢查使用者是否存在/etc/cron.allow中,存在則允許,如果在/etc/cron.allow裡沒有發現使用者,則會查詢檔案/etc/cron.deny如果沒有存在使用者則使用者可以新增定時作業。新增定時作業後會寫入檔案/var/spool/cron/中。
crontab用法
[root@linux ~]# crontab [-u username] [-l|-e|-r]
引數:-u :只有 root 才能進行這個任務,亦即幫其它使用者建立/移除 crontab;
-e :編輯 crontab 的工作內容
-l :查閱 crontab 的工作內容
-r :移除 crontab 的工作內容
範例:範例一:用 dmtsai 在每天的 12:00 發信給自己
[dmtsai@linux ~]$ crontab -e
# 此時會進入 vi 的編輯畫面讓您編輯工作!注意到,每項工作都是一行。
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分 時 日 月 周 ||
使用crontab -e新增定時作業,crontab -l顯示定時作業。
五個*號代表含義從左至右,當周為 0 或 7 時,都代表『星期天』的意思!
定時任務 例行任務
atd etc init.d atd start etc at.allow 首先尋找at.allow,在其中的使用者才可以使用at,其他人不可以使用 即使不在at.deny中 etc at.deny 沒有at.allow時,不在at.deny中的使用者可以使用at at mldv time at c...
linux例行性工作
linux工作排程種類 at,cron at at是乙個可以處理僅執行一次就結束排程的命令,不過要執行at時,必須要有atd這個服務。etc init.d atd restart atd啟動 at這個命令生成所要執行的工作,並將這個工作已文字的方式寫入 var spool at這個目錄內,該工作便能...
Linux 例行性工作
什麼是例行性工作?其實對於例行性工作而言就是在當前環境下週期性進行的必須工作。在linux下,有2種例行性工作種類 一種是突發性,做完以後就沒有的那種 at at是個可以處理僅執行一次就結束排程的命令,不過要執行at,必須要有atd這個服務。在某些linux版本中這個服務專案不是預設開啟的,所以我們...