1,crontab是個啥?
ubuntu系統自帶cron工具,cron是一個系統上的定時工具,用它的好處在於,不同的程序可以用同一個計時器,這樣就省得不同程序各自sleep了,另外它還支持比較多的個性化功能,比如每月1號執行一次,
2,crontab怎么用?
crontab是一個和當前用戶綁定的命令,一個用戶有一個用戶的定時配置文件,文件位置/var/spool/cron
crontab -l|-r|-e|-i 用戶名 #-l:顯示用戶定時文件的內容 #-r:刪除用戶定時文件 #-i:刪除用戶定時文件的時候給個提示,常用-ri #-e:編輯用戶的crontab文件,第一次用可能讓你選擇編輯器,
登錄系統用戶,並且為用戶創建定時文件:
crontab -e
#打開一個配置文件,並且讓用戶輸入crontab命令
輸入命令並且保存:
* * * * * /usr/bin/python /home/center/temp/crontest/logout.py #命令的意思是每隔一分鍾執行一次logout.py文件,ps:建議使用絕對命令
本人logout.py中的內容:
#!/usr/bin/python import time f=open("/home/center/temp/crontest/test.log","a") t = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) str1 = '執行時間:' + t + '\n' f.write(str1) f.close()
crontab命令格式是這樣的:
接下來需要啟動cron服務
sudo service cron start sudo service cron restart #重啟 sudo service cron stop #關閉
啟動成功以后使用ps查看后台進程,就會多一個這樣的
root 948 0.0 0.0 30748 3272 ? Ss 16:28 0:00 /usr/sbin/cron -f
那么問題來了,如果開啟了crontab服務的電腦重啟了以后,服務還有么?答案是,,還有的。本人親測
3,crontab定時格式詳解
占位符含義
每個字段代表的含義及取值范圍如下: Minute :分鍾(0-59),表示每個小時的第幾分鍾執行該任務 Hour : 小時(1-23),表示每天的第幾個小時執行該任務 Day : 日期(1-31),表示每月的第幾天執行該任務 Month : 月份(1-12),表示每年的第幾個月執行該任務 DayOfWeek : 星期(0-6,0代表星期天),表示每周的第幾天執行該任務
特殊符號含義
“*” ,代表所有的取值范圍內的數字; “/” , 代表”每”(“*/5”,表示每5個單位); “-” , 代表從某個數字到某個數字(“1-4”,表示1-4個單位); “,” ,分開幾個離散的數字;
例子:
每分鍾執行 * * * * *
每五分鍾執行 */5 * * * *
每小時執行 0 * * * *
每天執行 0 0 * * *
每周執行 0 0 * * 0
每月執行 0 0 1 * *
每年執行 0 0 1 1 *
5 * * * * ls /*指定每小時的第5分鍾執行一次ls命令*/
30 5 * * * ls /*指定每天的 5:30 執行ls命令*/
30 7 8 * * ls /*指定每月8號的7:30分執行ls命令*/
50 7 * * * root run-parts /etc/cron.daily /*每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件*/
*/2 8-20 * * * /usr/bin/backup 每天8點到晚上8點間隔2分鐘執行一次