1. 程式人生 > >Linux定時執行任務命令:at和crontab

Linux定時執行任務命令:at和crontab

本文介紹在Linux下的兩種定時執行任務的方法:at命令,以及crontab服務。

(1)at命令

假如我們只是想要讓特定任務執行一次,那麼,這時候就要用到at監控程式了。

設定at命令很簡單,指示定執行的時間,那麼就會在哪個時候執行。at類似列印 程序,會把任務放到/var/spool/at目錄中,到指定時間執行它 。at命令相當於另一個shell,執行at time命令時,它傳送一個個命令,可以輸入任意命令或者程式。at now + time命令可以在指示任務。

假設處理一個大型資料庫,要在別人不用系統時去處理資料,比如凌晨3點10分。那麼我們就應該先建立/home/kyle/do_job指令碼管理資料庫,計劃處理/home/kyle/do_job檔案中的結果。正常方式是這樣啟動下列命令:

# at 2:05 tomorrow at>/home/kyle/do_job at> Ctrl+D

AT Time中的時間表示方法

----------------------------------------------------------------------- 時 間 例子 說明 ----------------------------------------------------------------------- Minuteat now + 5 minutes任務在5分鐘後執行 Hour at now + 1 hour 任務在1小時後執行 Days at now + 3 days 任務在3天后執行 Weeks at now + 2 weeks 任務在兩週後執行 Fixed at midnight 任務在午夜執行 Fixed at 10:30pm任務在晚上10點30分

注意:一定要檢查一下atq的服務是否啟 動,有些作業系統未必是預設啟動的,linux預設為不啟動,而ubuntu預設為啟動的。檢查是否啟動,用service atd檢查語法,用service atd status檢查atd的狀態,用service atd start啟動atd服務。

檢視at執行的具體內容:一般位於/var/spool/at目錄下面, 用vi開啟,在最後一部分就是你的執行程式

(2)crontab

cron是一個linux下 的定時執行工具,可以在無需人工干預的情況下執行作業。由於Cron 是Linux的內建服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:

/sbin/service crond start//啟動服務 /sbin/service crond stop //關閉服務 /sbin/service crond restart //重啟服務 /sbin/service crond reload//重新載入配置 /sbin/service crond status//檢視服務狀態

你也可以將這個服務在系統啟 動的時候自動啟動:

在/etc/rc.d/rc.local這個指令碼的末尾加上:

/sbin/service crond start

現在Cron這個服務已經在程序裡面了,我們就可以用這個服務了,Cron服務提供以下幾種介面供大家使用:

1、直接用crontab命令編輯

cron服務提供 crontab命令來設定cron服務的,以下是這個命令的一些引數與說明:

crontab -u //設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數 crontab -l //列出某個使用者cron服務的詳細內容 crontab -r //刪除某個使用者的cron服務 crontab -e //編輯某個使用者的cron服務

比如說root檢視自己的cron設定:crontab -u root -l

再例如,root想刪除fred的cron設定:crontab -u fred -r

基本格式 :

*****command 分  時  日  月  周  命令 第1列表示分鐘1~59 每分鐘用*或者 */1表示 第2列表示小時1~23(0表示0點) 第3列表示日期1~31 第4列表示月份1~12 第5列標識號星期0~6(0表示星期天) 第6列要執行的命令

crontab檔案的一些例子:

#每晚的21:30重啟apache。 30 21 * * * /usr/local/etc/rc.d/lighttpd restart #每月1、10、22日 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart #每天早上6點10分 10 6 * * * date #每兩個小時 0 */2 * * * date #晚上11點到早上8點之間每兩個小時,早上8點 0 23-7/2,8 * * * date #每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點 0 11 4 * mon-wed date #1月份日早上4點 0 4 1 jan * date