1、定時任務crond介紹linux
crond是linux系統中用來按期執行命令或者指定程序任務的一種服務或者軟件。shell
crond默認狀況下(每分鐘),會檢查系統中是否有須要執行的定時任務,若是有,就會根據事先定義好的規則來執行這個定時任務。就比如生活中的鬧鐘同樣。可是注意的是crond對於秒級的任務(以秒爲單位定時任務)是無能爲力的,須要寫守護進程(shell循環)腳本或者使用Quartz實現秒級任務。apache
在Linux中,週期執行的任務通常由cron這個守護進程來處理[ps -ef|grep cron]。cron的配置文件稱爲「crontab」,是「cron table」的簡寫。cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間。緩存
service crond start //啓動服務
service crond stop //關閉服務
service crond restart //重啓服務
service crond reload //從新載入配置
service crond status //查看服務狀態 bash
2、linux定時任務分類:
ide
系統自身的按期執行的任務:如輪詢系統日誌、備份系統數據、清理系統緩存等,這些定時任務無需人爲干預.系統任務調度的配置文件:/etc/crontab。工具
/etc/crontab配置基本格式 : 測試
SHELL=/bin/bash #指定了系統要使用哪一個shell spa
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 :表示一段範圍
, :表示不一樣時間點
書寫定時任務時要領:
一、增長定時任務調試頻率。我的開發環境->辦公室測試環境->IDC機房測試->IDC正式上線
二、經過腳本日誌輸出調試任務。
三、注意環境變量致使的定時任務故障(JAVA)。
四、經過定時任務服務日誌調試任務。(var/log/cron)
五、系統任務裏命令要用絕對路徑。
六、腳本權限問題要加/bin/bash.
七、時間變量問題用\%轉義,最好用腳本。
八、定時任務加註釋
九、使用腳本程序代替命令行定時任務。
十、避免沒必要要的程序命令輸出。
例如:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啓apache。
二、用戶執行的任務:某個系統管理員或用戶按期要執行的任務。用戶按期要執行的工做,如用戶數據備份、定時郵件提醒等。用戶可使用 crontab 工具來定製本身的計劃任務。用戶任務調度的配置文件: /var/spool/cron/文件名(其文件名與用戶名一致,通常一個用戶最多隻有一個crontab文件)。
3、crontab命令詳解
命令功能:經過crontab 命令,咱們能夠在固定的間隔時間執行指定的系統指令或 shell script腳本。時間間隔的單位能夠是分鐘、小時、日、月、周及以上的任意組合。這個命令很是設合週期性的日誌分析或數據備份等工做。
命令格式: crontab [-u user] [file] crontab [-u user] [ -e | -l | -r ]
命令參數:
-u user:用來設定某個用戶的crontab服務,例如,「-u Tom」表示設定Tom用戶的crontab服務,此參數通常有root用戶來運行。
-e:編輯某個用戶的crontab文件內容。若是不指定用戶,則表示編輯當前用戶的crontab文件。
-l:顯示某個用戶的crontab文件內容,若是不指定用戶,則表示顯示當前用戶的crontab文件內容。
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,若是不指定用戶,則默認刪除當前用戶的crontab文件。
-i:在刪除用戶的crontab文件時給確認提示。