1. 程式人生 > >Linux系統定時任務

Linux系統定時任務

定時任務 crontab

一、定時任務crond介紹


  1. crond是linux系統中用來定期執行命令或者指定程序任務的一種服務或者軟件。

  2. crond默認情況下(每分鐘),會檢查系統中是否有需要執行的定時任務,如果有,就會根據事先定義好的規則來執行這個定時任務。就好比生活中的鬧鐘一樣。但是註意的是crond對於秒級的任務(以秒為單位定時任務)是無能為力的,需要寫守護進程(shell循環)腳本或者使用Quartz實現秒級任務。

  3. 在Linux中,周期執行的任務一般由cron這個守護進程來處理[ps -ef|grep cron]。cron的配置文件稱為“crontab”,是“cron table”的簡寫。cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間。

  4. service crond start //啟動服務
    service crond stop //關閉服務
    service crond restart //重啟服務
    service crond reload //重新載入配置
    service crond status //查看服務狀態

二、linux定時任務分類:

  1. 系統自身的定期執行的任務:如輪詢系統日誌、備份系統數據、清理系統緩存等,這些定時任務無需人為幹預.系統任務調度的配置文件:/etc/crontab。

/etc/crontab配置基本格式 :

SHELL=/bin/bash #指定了系統要使用哪個shell

PATH=/sbin:/bin:/usr/sbin:/usr/bin #指定了系統執行 命令的路徑,

MAILTO=root #指定了crond的任務執行信息將通過電子郵件發送給root用戶,如果MAILTO變量的值為空,則表示不發送任務 執行信息給用戶,

HOME=/ #HOME變量指定了在執行命令或者腳本時使用的主目錄

基本格式 :
*  *  *  *  *  command
分  時  日 月  周  命令
第1列表示分鐘0~59 每分鐘用*

第2列表示小時0~23 每小時用*

第3列表示日期1~31 每天用*

第4列表示月份1~12 每月用*

第5列標識號星期0~6(0表示星期天)

第6列要運行的命令


/n :每隔n單位時間(分、時、月、周)

17-19 :表示一段範圍

, :表示不同時間點


書寫定時任務時要領:

1、增加定時任務調試頻率。個人開發環境->辦公室測試環境->IDC機房測試->IDC正式上線

2、通過腳本日誌輸出調試任務。

3、註意環境變量導致的定時任務故障(JAVA)。

4、通過定時任務服務日誌調試任務。(var/log/cron)

5、系統任務裏命令要用絕對路徑。

6、腳本權限問題要加/bin/bash.

7、時間變量問題用\%轉義,最好用腳本。

8、定時任務加註釋

9、使用腳本程序代替命令行定時任務。

10、避免不必要的程序命令輸出。



例如:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

上面的例子表示每晚的21:30重啟apache。

2、用戶執行的任務:某個系統管理員或用戶定期要執行的任務。用戶定期要執行的工作,如用戶數據備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務。用戶任務調度的配置文件: /var/spool/cron/文件名(其文件名與用戶名一致,一般一個用戶最多只有一個crontab文件)。

三、crontab命令詳解


  1. 命令功能:通過crontab 命令,我們可以在固定的間隔時間執行指定的系統指令或 shell script腳本。時間間隔的單位可以是分鐘、小時、日、月、周及以上的任意組合。這個命令非常設合周期性的日誌分析或數據備份等工作。

  2. 命令格式: crontab [-u user] [file] crontab [-u user] [ -e | -l | -r ]

  3. 命令參數:

    -u user:用來設定某個用戶的crontab服務,例如,“-u Tom”表示設定Tom用戶的crontab服務,此參數一般有root用戶來運行。

    -e:編輯某個用戶的crontab文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件。

    -l:顯示某個用戶的crontab文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容。

    -r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當前用戶的crontab文件。

    -i:在刪除用戶的crontab文件時給確認提示。





Linux系統定時任務