Linux中執行定時任務,一般是經過crond
這個守護進程來完成的,用ps -ef | grep crond | grep -v grep
能夠看到。它會從三個地方讀取配置文件來進行後臺任務的執行:html
${USER}
這些配置文件記錄了命令行以及執行週期等信息。下面來分別看看這三種類型的配置文件:vim
該目錄下新建一個文本文件,並以當前用戶名命名,好比當前是root帳戶登陸,則vim root
,配置格式是這樣:* * * * * 命令
bash
第一個 * 表明每小時中的第幾分鐘(0-59)
第二個 * 表明天天的第幾個小時(0-23)
第三個 * 表明每月中的第幾天(1-31)
第四個 * 表明每一年的第幾個月(1-12)
第五個 * 表明每週的星期幾(0-7,0和7都表明星期日)編輯器
特殊符號,
表明不連續的時間。好比0 8,12,16 * * *
,就表明在天天的8點0分,12點0分,16點0分各執行一次。-
表明連續的時間範圍。好比0 5 * * 1-6
,表明在週一到週六的凌晨5點0分執行命令*/n
表明每隔多久執行一次。好比*/10 * * * *
,表明每隔10分鐘就執行一遍命令url
例:命令行
45 22 * * * 命令
在22點45分執行命令0 17 * * 1 命令
每週1 的17點0分執行命令0 5 1,15 * * 命令
每個月1號和15號的凌晨5點0分執行命令40 4 * * 1-5 命令
每週一到週五的凌晨4點40分執行命令*/10 4 * * * 命令
天天的凌晨4點,每隔10分鐘執行一次命令0 0 1,15 * 1 命令
每個月1號和15號,每週1的0點0分都會執行命令。注意:星期幾和幾號最好不要同時出現,由於他們定義的都是天。很是容易讓管理員混亂。案例*/1 * * * * echo 'hello' >> /tmp/a.txt
每隔一分鐘向/tmp/a.txt中追加一行hello,可使用tail -f /tmp/a.txt
觀察code
PS:使用crontab -e
效果等同於vim /var/spool/cron/${USER}
這個文件負責安排由系統管理員制定的維護系統以及其餘任務的crontab。htm
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # 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 # run-parts 00 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 44 4 1 * * root run-parts /etc/cron.monthly
MAILTO=root
是說,當 /etc/crontab 這個檔案中的例行性命令發生錯誤時,會將錯誤訊息或者是屏幕顯示的訊息傳給誰。blog
00 * * * * root run-parts /etc/cron.hourly
:在 #run-parts 以後的命令,能夠看到,五個佔位符後面接的是root,表明以root身份執行。而run-parts表明後面接的/etc/cron.hourly
是該目錄內(/etc/cron.hourly)的全部可執行文件,也就是說,每一個小時的00分,系統會以root身份去/etc/cron.hourly這個目錄下執行全部可執行的文件,後面三行也是相似的意思。能夠將天天須要執行的命令直接寫到/etc/cron.daily便可,這樣能夠不使用crontab -e。進程
該目錄用來存聽任何要執行的crontab文件或腳本。
查看/etc目錄下有沒有cron.allow或cron.deny文件,做用以下:
crontab命令用於安裝、刪除或者列出用於驅動cron後臺進程的表格。用戶把須要執行的命令序列放到crontab文件中以得到執行。