Linux crontab 命令介紹
語法介紹
使用權限 : root用戶和crontab文件的所有者
crontab格式
語法
:crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
說明 :
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中 ,間隔執行只能以列舉方式,詳請見例子。
簡單使用方法:
crontab –e
後加入:
*/1 * * * * /usr/local/curl/bin/curl http://appbaike.com/
每分鐘執行一次。
然後 /sbin/service crond restart 重新啟動
詳細使用方法:
用VI編輯一個文件 cronfile,然后在這個文件中輸入格式良好的時程表。編輯完成后,保存並退出。在命令行輸入
$: crontab cronfile
這樣就將cronfile文件提交給c r o n進程,同時,新創建cronfile的一個副本已經被放在/ v a r / s p o o l / c r o n目錄中,文件名就是用戶名。
以某一頻率執行任務
linux缺省會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:
- crontab
- cron.d
- cron.daily
- cron.hourly
- cron.monthly
- cron.weekly
如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。
示例:
每隔一分鍾執行一次腳本 /opt/bin/test-cron.sh
可以在cron.d新建腳本 echo-date.sh
內容為
*/1 * * * * root /opt/bin/test-cron.sh
在指定的時間運行任務
也可以通過at命令來控制在指定的時間運行任務
如:
at -f test-cron.sh -v 10:25
其中-f 指定腳本文件, -v 指定運行時間
quote:ea946d690b="lophyxp"]首先用
contab -l >contabs.tmp
導出contab的配置。
然后編輯contabs.tmp文件。以一下格式添加一行:
分鍾 小時 天 月 星期 命令
比如
10 3 * * 0,6 hello
就是每周六、周日的3點10分執行hello程序。
15 4 * * 4-6 hello
就是從周四到周六的4點15點執行hello程序。
然后用
contab contabs.tmp
命令導入新的配置。
一般不建議直接修改/etc/下的相關配置文件。
啟動cron進程的方法:/etc/init.d/crond start
開機就啟動cron進程的設置命令:chkconfig --add crond
方法二:
把cron加入到啟動腳本中:
# rc-update add vixie-cron default
crontab -l #查看你的任務
crontab-e#編輯你的任務
crontab-r#刪除用戶的crontab的內容
實例講解二:
系統cron設定:/etc/crontab
通過 /etc/crontab 文件,可以設定系統定期執行的任務,當然,要想編輯這個文件,得有root權限
0 7 * * * root mpg123 ~/wakeup.mp3
分 時 日 月 周
示例:
0 4 * * 0 root emerge --sync && emerge -uD world #每周日凌晨4點,更新系統
0 2 1 * * root rm -f /tmp/* #每月1號凌晨2點,清理/tmp下的文件
0 8 6 5 * root mail robin < /home/galeki/happy.txt #每年5月6日給robin發信祝他生日快樂
假如,我想每隔2分鍾就要執行某個命令,或者我想在每天的6點、12點、18點執行命令,諸如此類的周期,可以通過 “ / ” 和 “ , ” 來設置:
*/2 * * * * root ............... #每兩分鍾就執行........
0 6,12,18 * * * root ............... #每天6點、12點、18點執行........
每兩個小時
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 執行PHP的方法
要用 crontab 自動執行 php 程式,可以這樣做:
方法一
1. 在 php 程式的第一行加入:
#!/usr/local/php/bin/php -q
例如:
Php代碼
- #!/usr/local/php/bin/php -q
- <?php
- $foo = 123;
- ?>
請留意,我的 php 是安裝在 /usr/local/php,請根據你的 php 執行檔位置作出修改。
2. 將 php 程式給予可執行權限:
chmod +x testing.php
3. 執行 crontab -e,然後加入以下內容:
00 00 * * * /path/to/testing.php > /dev/null 2>&2
以上語法會在每天的零時零分執行 /path/to/testing.php
方法二
另一個方法是不用在 php 程式的第一行加入 "#!/usr/local/php/bin/php -q",可以省略第一步及第二步,直接執行 crontab -e,並輸入以下內容:
00 00 * * * usr/local/php/bin/php -q /path/to/testing.php > /dev/null 2>&2
這個方法的結果跟方法一的結果相同。