1. 程式人生 > >linux例行性任務(定時作業)

linux例行性任務(定時作業)

tab 工作 方式 檔案 job 談一談 == com round

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 這個玩意兒的語法吧!
[[email protected] ~]# 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 這個使用者
[[email protected]

/* */ ~]# at now + 5 minutes
at> /bin/mail dmtsai -s "testing at job" < /root/.bashrc
at> <EOT> <==這裏輸入 [ctrl] + d 就會出現 <EOF> 的字樣!代表結束!
job 8 at 2005-09-07 10:47
# 上面這行信息在說明,第 8 個 at 工作將在 2005/09/07 的 10:47 進行!
範例二:由於機房預計於 2005/09/16 停電,我想要在 2005/09/15 23:00 關機?
[[email protected] ~]# at 23:00 2005-09-15
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT>
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用法

[[email protected] ~]# crontab [-u username] [-l|-e|-r]
參數:
-u :只有 root 才能進行這個任務,亦即幫其它使用者建立/移除 crontab;
-e :編輯 crontab 的工作內容
-l :查閱 crontab 的工作內容
-r :移除 crontab 的工作內容
範例:
範例一:用 dmtsai 在每天的 12:00 發信給自己
[[email protected] ~]$ crontab -e
# 此時會進入 vi 的編輯畫面讓您編輯工作!註意到,每項工作都是一行。
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分 時 日 月 周 |<==============指令串========================>|

使用crontab -e添加定時作業,crontab -l顯示定時作業。

五個*號代表含義從左至右,當周為 0 或 7 時,都代表『星期天』的意思!

技術分享

技術分享

技術分享

linux例行性任務(定時作業)