轉載:http://i.592.net/?post=276php
Debian的定時執行命令Crontab,這個至關於Windows的計劃任務linux
想要讓Debian定時執行命令就得靠crontab了!
它的功能相似微軟的計劃任務,能夠在您設定的時間執行你想要的命令。
經過編寫設定文件能夠組合出複雜的執行時段,讓命令的執行更加有效率。bash
cron設置文件在Debian系統下的位置
/etc/crontab服務器
大體內容以下:dom
01 |
# /etc/crontab: system-wide crontab |
02 |
# Unlike any other crontab you don 't have to run the `crontab' |
03 |
# command to install the new version when you edit this file. |
04 |
# This file also has a username field, that none of the other crontabs do . |
05 |
06 |
SHELL=/bin/sh |
07 |
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin |
08 |
09 |
# m h dom mon dow user command |
10 |
17 * * * * root run-parts --report /etc/cron.hourly |
11 |
25 6 * * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily |
12 |
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts --report /etc/cron.weekly |
13 |
52 6 1 * * root test -x /usr/sbin/anacron || run-parts --report /etc/cron.monthly |
14 |
0 20 1 * * root /usr/bin/updatedb |
15 |
# |
須要設定的是 # m h dom mon dow user command 下面的部份
由左至右相對應的意思爲:ide
分0-59 時0-23 日1-31 月1-12 周0-7 執行命令的用戶 命令工具
其中比較有意思的是:周,0和7都表明星期日post
而可使用的特殊符號有網站
* (星號) 表明全部時間都接受
, (逗號) 表明同一個分類能夠有多少個值
- (減號) 表明在這個時段內執行
/n 表明每n個時間就執行一次this
範例:
30 12 * * * command: <em>天天12:30執行command</em>
0 6,12 15 * * command:<em>每個月15日的6:00和12:00執行command</em>
10 8 1-15 6 * command:<em>每一年6月1至15日的8:10執行command</em>
*/5 * * * 7 command: <em>星期日每隔五分鐘執行一次command</em>
定時器語法:
就是上面計劃任務的第一部分。它決定了什麼時候執行計劃任務。
它包含5部分:
1.分鐘(0-59)
2.小時(0-23)
3.一個月的哪一天(1-31)
4.一年中的哪一個月(1-12)
5.星期幾(0是星期天)
星號 若是某個部分出現的是星號而不是數字,就是說明這個部分表示的時間所有會執行。
可能一時不太容易說清楚,再看例子吧。
示例:
一、下面的計劃任務會一直運行
* * * * * [command]
二、下面的計劃任務會在每一個小時的0分時運行(就是每小時執行一次)
0 * * * * [command]
三、下面依舊是一個每小時運行一次的計劃任務。不過是在每一個小時的一刻鐘時運行的(1:15,2:15.。。)
15 * * * * [command]
四、下面的計劃任務天天執行一次,在2:30分
30 2 * * * [command]
五、下面的計劃任務是在每月2號的午夜執行(好比:2010年2月2日00:00)
0 0 2 * * [command]
六、下面的計劃任務會在每週一的每一個小時0分鐘時執行一次
0 * * * 1 [command]
七、下面的會每小時運行3次,在0分,10分,和20分時
0,10,20 * * * * [command]
八、下面是用除號「/」表示每多少運行一次。
*/5 * * * * [command] 每5分鐘運行一次
00 */2 * * * [command] 每2小時運行一次 (* */2 * * * [command] 這種寫法是錯誤的!)
*/1 * * * * root wget -O /var/log/cron.txt http://www.592.net/test.php 每分鐘訪問網站某PHP腳本一次,檢查是否每分鐘自動運行了PHP,能夠查看 var/log/cron.txt文件,看下是否有網站PHP返回的內容就能夠了!
九、還能夠用「-」表示一個範圍,以下表示5到10點的每一個整點運行一次
0 5-10 * * * [command]
十、另外還有一個特殊的時間關鍵字「@reboot」,就是每次重啓服務器時運行計劃任務
@reboot [command]
設定和管理計劃任務
編輯Crontab,來設定計劃任務。使用下面的命令,會在vi 裏打開crontab的內容以供編輯:
crontab -e
若是你只想看看,不須要編輯,可使用如下的命令
crontab -l
要刪除crontab的內容,就是刪除全部的計劃任務,能夠這樣:
crontab -r
cron是個linux下的定時執行工具,能在無需人工干預的狀況下運行做業。因爲Cron 是Linux的內置服務,但他不自動起來,能用如下的方法啓動、關閉這個服務:
編輯/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"這個參數了,若是去掉這個參數的話,後面就能夠寫要運行的某個腳本名,而不是文件夾名了。
重啓命令:
Debian
/etc/init.d/cron restart
Linux
/etc/rc.d/init.d/crond restart