1. 程式人生 > >cron定時表達式

cron定時表達式

redhat 服務 con 用戶 一次 tle evel 下午 一個

crontab 每分鐘、每小時、每天、每周、每月、每年定時執行

2016年07月27日 16:47:49 閱讀數:1789

每五分鐘執行 */5 * * * *

每小時執行 0 * * * *

每天執行 0 0 * * *

每周執行 0 0 * * 0

每月執行 0 0 1 * *

每年執行 0 0 1 1 *

2)Cron表達式範例:

每隔5秒執行一次:*/5 * * * * ?

每隔1分鐘執行一次:0 */1 * * * ?

每天23點執行一次:0 0 23 * * ?

每天淩晨1點執行一次:0 0 1 * * ?

每月1號淩晨1點執行一次:0 0 1 1 * ?

每月最後一天23點執行一次:0 0 23 L * ?

每周星期天淩晨1點實行一次:0 0 1 ? * L

在26分、29分、33分執行一次:0 26,29,33 * * * ?

每天的0點、13點、18點、21點都執行一次:0 0 0,13,18,21 * * ?

0 0 10,14,16 * * ? 每天上午10點,下午2點,4點
0 0/30 9-17 * * ? 朝九晚五工作時間內每半小時
0 0 12 ? * WED 表示每個星期三中午12點
"0 0 12 * * ?" 每天中午12點觸發
"0 15 10 ? * *" 每天上午10:15觸發
"0 15 10 * * ?" 每天上午10:15觸發
"0 15 10 * * ? *" 每天上午10:15觸發
"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發
"0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鐘觸發
"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鐘觸發
"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發
"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鐘觸發
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發
"0 15 10 15 * ?" 每月15日上午10:15觸發
"0 15 10 L * ?" 每月最後一日的上午10:15觸發
"0 15 10 ? * 6L" 每月的最後一個星期五上午10:15觸發
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最後一個星期五上午10:15觸發
"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發


1.作用


使用crontab命令可以修改crontab配置文件,然後該配置由cron公用程序在適當的時間執行,該命令使用權限是所有用戶。

2.格式

crontab [-u user] {-l | -r | -e}

3.主要參數

-e:執行文字編輯器來設定時程表,內空的文字編輯器是vi

-r:刪除目前的時程表

-l列出目前的時程表。

Crontab文件的格式為”M H D m d cmd”。其中,M代表分鐘(0~59),H代表小時(0~23),D代表天(1~31),m代表月(1~12),d代表一星期內的天(0~6,0為星期天)。Cmd表示要運行的程序,它被送入sh執行,這個shell只有USER、HOME、SHELL三個環境變量。



使用cron服務,用server crond status查看cron服務狀態,如果沒有啟動則service crond start啟動它,cron服務是一個定時執行的服務,可以通過crontab命令添加或編輯需要定時執行的任務:

crontab –u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數

crontab –l //列出某個用戶cron服務的詳細內容

crontab –r //刪除某個用戶的cron服務

crontab –e //編輯某個用戶的cron服務

crontab filename //以filename作為crontab的任務列表文件並載入



比如說root查看自己的cron設置:crontab –u root –l

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

在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab –u root –e

進入vi編輯模式,編輯的內容一定要符合下面的格式:

*/1 * * * * ls >>/tmp/ls.txt

編輯/etc/crontab文件,在末尾加上一行:30 5 * * * root init 6這樣就將系統配置為每天早上5點30分自動重新啟動。



crontab 文件中的行由6個字段組成,不同字段間用空格或tab鍵分隔。前5個字段指定命令要運行的時間

分鐘(0-59)

小時(0-23)

日期(1-31)

月份(1-12)

星期幾(0-6,其中0代表星期日,好像7也代表星期日)

第6個字段是一個要在適當時間執行的字符串。

例子:

#MIN HOUR DAY MONTH DAYOFWEEK COMMAND

#每天早上6點10分

10 6 * * * date

#每兩個小時

0 */2 * * * date

#晚上11點到早上8點之間每兩個小時,早上8點

0 23-7/2,8 * * * date

#每個月的4號和每個禮拜一到禮拜三的早上11點

0 11 4 * 1-3 date

#1月1日早上4點

0 4 1 1 * date

補充:在使用crontab的時候,要特別註意的是運行腳本中能夠訪問到的環境變量和當前測試環境中環境變量未必一致,一個比較保險的做法是在運行的腳本程序中自行設置環境變量(export)

(1) 先建一個文件crond.txt如下,每天早上5點36分重新啟動

36 5 * * * reboot

(2)上傳到/opt目錄

(3)運行命令

crontab /opt/crond.txt

crontab –l

讓配置文件生效:如果讓配置文件生效,還得重新啟動cron,切記,既然每個用戶下的cron配置文件修改後,也要重新啟動cron服務器。



在Fedora和Redhat中,我們應該用:

/etc/rc.d/crond restart

如果讓crond在開機時運行,應該改變其運行級別:

chkconfig –level 35 crond on
service crond status查看cron服務狀態,如果沒有啟動則service crond start啟動它,cron服務是一個定時執行的服務,可以通過crontab命令添加或者編輯需要定時執行的任務

cron定時表達式