sudo crontab -emysql
5 * * * *每小時第5分鐘執行
*/5 * * * *每5分鐘執行
0 2 * * * 天天凌晨2點執行linux
cron是一個linux下的定時執行工具,能夠在無需人工干預的狀況下運行做業。因爲Cron 是Linux的內置服務,但它不自動起來,能夠用如下的方法啓動、關閉這個服務:sql
/sbin/service crond start //啓動服務
/sbin/service crond stop //關閉服務
/sbin/service crond restart //重啓服務
/sbin/service crond reload //從新載入配置shell
你也能夠將這個服務在系統啓動的時候自動啓動:
在/etc/rc.d/rc.local這個腳本的末尾加上:
/sbin/service crond startbash
如今Cron這個服務已經在進程裏面了,咱們就能夠用這個服務了,Cron服務提供如下幾種接口供你們使用:服務器
一、直接用crontab命令編輯dom
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
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容必定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt測試
這個格式的前一部分是對時間的設定,後面一部分是要執行的命令,若是要執行的命令太多,能夠把這些命令寫到一個腳本里面,而後在這裏直接調用這個腳本就能夠了,調用的時候記得寫出命令的完整路徑。時間的設定咱們有必定的約定,前面五個*號表明五個數字,數字的取值範圍和含義以下:
分鐘 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期 (0-6)//0表明星期天
除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*表明全部的取值範圍內的數字,"/"表明每的意思,"*/5"表示每5個單位,"-"表明從某個數字到某個數字,","分開幾個離散的數字。如下舉幾個例子說明問題:
天天早上6點
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意單純echo,從屏幕上看不到任何輸出,由於cron把任何輸出都email到root的信箱了。
每兩個小時
0 */2 * * * echo "Have a break now." >> /tmp/test.txt
晚上11點到早上8點之間每兩個小時,早上八點
0 23-7/2,8 * * * echo "Have a good dream:)" >> /tmp/test.txt
每月的4號和每一個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * 1-3 command line
1月1日早上4點
0 4 1 1 * command line
每次編輯完某個用戶的cron設置後,cron自動在/var/spool/cron下生成一個與此用戶同名的文件,此用戶的cron信息都記錄在這個文件中,這個文件是不能夠直接編輯的,只能夠用crontab -e 來編輯。cron啓動後每過一份鍾讀一次這個文件,檢查是否要執行裏面的命令。所以此文件修改後不須要從新啓動cron服務。
二、編輯/etc/crontab 文件配置cron
cron服務每分鐘不只要讀一次/var/spool/cron內的全部文件,還須要讀一次/etc/crontab,所以咱們配置這個文件也能運用 cron服務作一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //若是出現錯誤,或者有數據輸出,數據做爲郵件發給這個賬號
HOME=/ //使用者運行的路徑,這裏是根目錄
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小時執行/etc/cron.hourly內的腳本
02 4 * * * root run-parts /etc/cron.daily //天天執行/etc/cron.daily內的腳本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期執行/etc/cron.weekly內的腳本
42 4 1 * * root run-parts /etc/cron.monthly //每個月去執行/etc/cron.monthly內的腳本
你們注意"run-parts"這個參數了,若是去掉這個參數的話,後面就能夠寫要運行的某個腳本名,而不是文件夾名了。
--------------------------------------
基本格式 :
* * * * * command
分 時 日 月 周 命令
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啓lighttpd 。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每個月一、十、22日的4 : 45重啓lighttpd 。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每週6、週日的1 : 10重啓lighttpd 。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在天天18 : 00至23 : 00之間每隔30分鐘重啓lighttpd 。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重啓lighttpd 。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啓lighttpd
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啓lighttpd
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每個月的4號與每週一到週三的11點重啓lighttpd
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一號的4點重啓lighttpd
=========================================
crontab -e
進入一個vi 編輯界面
在最後一行加上
*/30 * * * * netstat > /tmp/net.log
表示每隔30分就執行netstat命令,並把執行結果存入net.log中。
Crontab是一個很方便的在unix/linux系統上定時(循環)執行某個任務的程序
使用cron服務,用 service crond status 查看 cron服務狀態,若是沒有啓動則 service crond start啓動它,
cron服務是一個定時執行的服務,能夠經過crontab 命令添加或者編輯須要定時執行的任務:
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
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
進入vi編輯模式,編輯的內容必定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
編輯/etc/crontab文件,在末尾加上一行: 30 5 * * * root init 6 這樣就將系統配置爲了天天早上5點30自動從新啓動。
須要將crond設置爲系統啓動後自動啓動的服務,能夠在/etc/rc.d/rc.local 中,在末尾加上
service crond start
若是還須要在系統啓動十加載其餘服務,能夠繼續加上其餘服務的啓動命令。
好比: service mysqld start
基本用法:
1. crontab -l
列出當前的crontab任務
2. crontab -d
刪除當前的crontab任務
3. crontab -e (solaris5.8上面是 crontab -r)
編輯一個crontab任務,ctrl_D結束
4. crontab filename
以filename作爲crontab的任務列表文件並載入
crontab file的格式:
crontab 文件中的行由 6 個字段組成,不一樣字段間用空格或 tab 鍵分隔。前 5 個字段指定命令要運行的時間
分鐘 (0-59)
小時 (0-23)
日期 (1-31)
月份 (1-12)
星期幾(0-6,其中 0 表明星期日)
第 6 個字段是一個要在適當時間執行的字符串
例子:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#天天早上6點10分
10 6 * * * date
#每兩個小時
0 */2 * * * date (solaris 5.8彷佛不支持此種寫法)
#晚上11點到早上8點之間每兩個小時,早上8點
0 23-7/2,8 * * * date
#每月的4號和每一個禮拜的禮拜一到禮拜三的早上11點
0 11 4 * mon-wed date
#1月份日早上4點
0 4 1 jan * date
補充:在使用crontab的時候,要特別注意的是運行腳本中可以訪問到的環境變量和當前測試環境中的環境變量未必一致,一個比較保險的作法是在運行的腳本程序中自行設置環境變量(export)
(1)先建一個文件crond.txt以下, 天天早上5點36分從新啓動
36 5 * * * reboot
(2)上傳到/opt目錄
(3)運行命令
crontab /opt/crond.txt
crontab -l
讓配置文件生效:若是讓配置文件生效,還得從新啓動cron,切記,既然每一個用戶下的cron配置文件修改後。也要從新啓動cron服務器。
[root@localhost ~]# /etc/init.d/crond restart
若是讓crond 在開機時運行,應該改變其運行級別;
[root@localhost ~]# chkconfig --levels 35 crond on
service crond status 查看 cron服務狀態,若是沒有啓動則 service crond start啓動它, cron服務是一個定時執行的服務,能夠經過crontab 命令添加或者編輯須要定時執行的任務
Crontab文件的每一行由六個域(minutes、hours、day of month、month、day of week、 command)組 成,域之間用空格或Tab分開,其中:
minutes: 分鐘域,值的範圍是0到59
hours: 小時域,值的範圍是0到23
day of month: 日期,值的範圍是1到31
month: 月份,值的範圍是1到12
day of week: 星期,值的範圍是0到6,星期日值爲0
command: 所要運行的命令
若是一個域是*,代表命令能夠在該域全部可能的取值範圍內執行。
如���一個域是由連字符隔開的兩個數字,代表命令能夠在兩個數字之間的範圍內執行(包括兩個數字 自己)。
若是一個域是由逗號隔開的一系列值組成的,代表命令能夠在這些值組成的範圍內執行。
若是日期域和星期域都有值,則這兩個域都有效。
編寫一個文件,用以啓動自動備份進程。
cd /opt
touch reboot.txt
在reboot.txt中添加一下內容:
0 4 * * * reboot
crontab /opt/reboot.txt
用crontab -e編輯定時操做,例如加入下行命令:
用crontab -l命令來查看
注意:須要啓動服務(添加在rc.local中)
重啓crond任務
/etc/init.d/cron restart (Ubuntu下)
第一種 在Fedora或Redhat 等以RPM包管理的系統中;
[root@localhost ~]# /etc/init.d/crond start
[root@localhost ~]# /etc/init.d/crond stop
[root@localhost ~]# /etc/init.d/crond restart
/etc/rc.d/init.d/crond restart
命令簡介
crontab-操做每一個用戶的守護程序和該執行的時間表。
部分參數說明
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用標準輸入替代目前的crontab.
crontab-1[user]-列出用戶目前的crontab.
crontab-e[user]-編輯用戶目前的crontab.
crontab-d[user]-刪除用戶目前的crontab.
crontab-c dir- 指定crontab的目錄。
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這三個環境變量。
下面是一個例子文件:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#天天早上6點
106* * * date
#每兩個小時
0*/2* * * date
#晚上11點到早上8點之間每兩個小時,早上部點
0 23-7/2,8* * * date
#每月的4號和每一個禮拜的禮拜一到禮拜三的早上11點
0 11 4* mon-wed date
#1月份日早上4點
0 4 1 jan* date
範例
lark:~>crontab-1 列出用戶目前的crontab.
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
10 6* * * date
0*/2* * * date
0 23-7/2,8 * * * date
lark:~>
使用權限 : root用戶和crontab文件的全部者
語法 :
crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
重啓:sudo /etc/init.d/cron restart
說明 :
crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是相似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必需要有其權限(好比說是 root)纔可以指定他人的時程表。若是不使用 -u user 的話,就是表示設定本身的時程表。
參數 :
-e [UserName]: 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,若是你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(好比說 setenv VISUAL joe)
-r [UserName]: 刪除目前的時程表
-l [UserName]: 列出目前的時程表
-v [UserName]:列出用戶cron做業的狀態
時程表的格式以下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程式,就是在終端寫入的命令。
當 f1 爲 * 時表示每分鐘都要執行 program,f2 爲 * 時表示每小時都要執行程式,其他類推
當 f1 爲 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 爲 a-b 時表示從第 a 到第 b 小時都要執行,其他類推
當 f1 爲 */n 時表示每 n 分鐘個時間間隔執行一次,f2 爲 */n 表示每 n 小時個時間間隔執行一次,其他類推
當 f1 爲 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 爲 a, b, c,... 時表示第 a, b, c...個小時要執行,其他類推
使用者也能夠將全部的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。
因爲unix版本不同,因此部分語法有差異,例如在hp unix aix 中設定間隔執行若是採用*/n 方式將出現語法錯誤,在這類unix中 ,間隔執行只能以列舉方式,詳請見例子。
使用方法:
用VI編輯一個文件 cronfile,而後在這個文件中輸入格式良好的時程表。編輯完成後,保存並退出。
在命令行輸入
$: crontab cronfile
這樣就將cronfile文件提交給c r o n進程,同時,新建立cronfile的一個副本已經被放在/ v a r / s p o o l / c r o n目錄中,文件名就是用戶名。
例子 :
每個月天天每小時的第 0 分鐘執行一次 /bin/ls :
0 * * * * /bin/ls
在 12 月內, 天天的早上 6 點到 12 點中,每隔 20 分鐘執行一次 /usr/bin/backup :
*/20 6-12 * 12 * /usr/bin/backup
週一到週五天天下午 5:00 寄一封信給 alex@domain.name :
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata
每個月天天的午夜 0 點 20 分, 2 點 20 分, 4 點 20 分....執行 echo "haha"
20 0-23/2 * * * echo "haha"
晚上11點到早上8點之間每兩個小時,早上8點
0 23-7/2,8 * * * date
在hp unix,中,每20分鐘執行一次,表示爲:0,20,40 * * * * 而不能採用*/n方式,不然出現語法錯誤
轉自:http://www.linuxidc.com/Linux/2012-02/54391.htm