crontab 執行周期性的定時任務


crontab(cron table)命令常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。

crontab文件包含送交cron守護進程的一系列作業和指令。
每個用戶可以擁有自己的crontab文件;同時,操作系統保存一個針對整個系統的crontab文件,該文件通常是/etc/crontab,而這個文件只能由系統管理員來修改。

crontab [-u user] [-l | -r | -e] [-i]

-l:列出當前用戶的計划任務。
-e:編輯當前用戶的計划任務。
-r:刪除當前用戶的所有計划任務。即刪除/var/spool/cron/USERNAME文件。
-u:管理指定用戶的計划任務,僅root有權限。
-i:在使用-r選項刪除所有任務時提示用戶確認。




 

crontab的語法

crontab分為兩類,系統crontab 和 用戶crontab。



1、系統cron任務

系統的crontab存放在 /etc/crontab # vim /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed a、每一行定義一個周期性任務,共7個字段。 b、此處的環境變量不同於用戶登錄后獲得的環境,因此建議命令使用絕對路徑。 c、執行結果會發送郵件給mailto指定的用戶。 



2、用戶cron任務

用戶的crontab文件存放在 /var/spool/cron/USERNAME # crontab -e -u USERNAME a、每一行定義一個周期性任務,共6個字段。 b、此處的環境變量不同於用戶登錄后獲得的環境,因此建議命令使用絕對路徑。 c、執行結果會發送郵件給當前用戶。 




 
crontab格式說明

 

星號(*)匹配所有有效的值。
短橫線(-)表示范圍連續取值。
逗號(,)表示離散取值。
正斜線(/)指定間隔頻率。例如,0-59/2 在分鍾字段表示每兩分鍾。
  
指定的時間點不能被步長整除時,其意義將不存在。例如 */7 * * * *

注意:%在crontab中被認為是newline,使用時需要用 \ 轉義。比如crontab文件中,如果有 "date +%Y%m%d",必須替換為:"date +\%Y\%m\%d"。
注意:crontab的最小時間單位為”分鍾“,想完成”秒“級任務,得需要借助於其它方式。

解決方案:
先定義為每分鍾任務,再利用腳本實現在每分鍾之內,循環執行多次。 sleep命令 delay for a specified amount of time. s: 秒,默認單位 m: 分 h: 小時 d: 天 usleep命令 sleep some number of microseconds.The default is 1. # usleep 1000000 休眠1秒 



輸入crontab -e命令,即可編輯當前用戶的定時任務列表;

示例:

*/5 * * * *         每5分鍾執行一次
3 * * * *           每小時的第3分鍾執行一次
3 4 * * 5           每周5的4點3分執行一次
5 6 7 * *           每月的7號的6點5分執行一次
7 8 9 10 *          每年的10月9號8點7分執行一次
9 8 * * 3,7         每周3和周日的8點9分
0 8,20 * * 3,7      每周3和周日的8點和20點執行一次
0 9-18 * * 1-5      周一到周五的9-18點,即工作時間內的每小時
0 7 25 12 *         每年的12月25號7點執行一次




 

其他操作

service crond start    //啟動服務
service crond stop     //關閉服務
service crond restart  //重啟服務
service crond reload   //重新載入配置
service crond status   //查看服務狀態 

查看所有用戶的crontab:
for u in `cat /etc/passwd | cut -d":" -f1`;do crontab -l -u $u;done  

查看cron的日志:
tail -50f /var/log/cron 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM