在centos上最經常使用的定時任務應該就是crontab了,在通過各類度娘以後有三種方式實現定時任務的方法,可是所用到的場景有所不一樣後端
at 適合僅執行一次就結束的調度命令,須要啓動一個後端的atd服務。 crontab 須要啓動一個服務crond才行,crond服務經過crontab命令實現 anacron 沒法週期性執行,只能以天爲週期,但有個特色,在關機狀態下未>執行的任務,下次開機時能夠補上執行
這裏也直講最經常使用的crontab,主要其餘兩種我也沒看也沒測試centos
用到crontab那麼就必定要知道crond,crond和crontab是不可分割的,crond個人理解是一個守護進程,或者說這纔是咱們定時任務的核心,crontab是一個編輯或者說是管理定時任務的工具
crontab個人理解就是crond服務處於啓動狀態,這個服務會默認每分鐘去檢測是否有須要執行的定時任務,因此crond不能守護秒級定時任務。而這個任務的具體內容是經過crontab來管理的,至於具體管理方式後面繼續講bash
通常狀況下crond、crontab是安裝好的,這裏主要提一下萬一沒有crontab你別想着直接用yum去安裝crond或者crontab由於你會發現找不到包,其實定時任務的包是cronie。(這裏由於我遇到了因此提一下)工具
yum install -y cronie
這樣就好了測試
systemctl start crond 啓動服務 systemctl stop crond 中止服務 systemctl restart crond 重啓服務 systemctl reload crond 重載配置文件 systemctl status crond 查看狀態
crontab -u 設定某個用戶的cron服務 crontab -l 顯示crontab文件(顯示已設置的定時任務) crontab -e 編輯crontab文件(編輯定時任務) crontab -r 刪除crontab文件(刪除定時任務) crontab -i 刪除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 用戶的定時任務分6段,分別是:分,時,日,月,周,命令 第1列表示分鐘1~59 每分鐘用*或者 */1表示 第2列表示小時1~23(0表示0點) 第3列表示日期1~31 第4列表示月份1~12 第5列標識號星期0~6(0表示星期天) 第6列要運行的命令 *:表示任意時間都,實際上就是「每」的意思。能夠表明00-23小時或者00-12每個月或者00-59分 -:表示區間,是一個範圍,00 17-19 * * * cmd,就是天天17,18,19點的整點執行命令 ,:是分割時段,30 3,19,21 * * * cmd,就是天天凌晨3和晚上19,21點的半點時刻執行命令 /n:表示分割,能夠當作除法,*/5 * * * * cmd,每隔五分鐘執行一次
配置文件路徑:/etc/crontab
在配置文件中,本來6個段的配置,咱們須要在命令前面再加一個用戶段
即:分 時 日 月 周 用戶 命令
直接添加到最後一行便可centos7
使用命令編輯至關於就是編輯當前用戶的任務,因此不須要加用戶字段,這裏就是6段rest
* * * * * /home/wsj/scheduledTest.sh
進入/var/spool/cron/日誌
若是你執行了以上兩種方式,你再進來看一下這個目錄下的文件你可能會發現一點問題
這裏的文件都是以用戶名來命名的,你再打開你使用crontab -e 添加過任務的用戶文件,原來crontab -e編輯的就是這裏的文件,因此咱們若是須要爲哪一個用戶添加任務,只用編輯這個目錄下對應用戶的文件便可code
* * * * * 每1分鐘執行一次 15,30,45 * * * * 每小時的第1五、30、45分執行 15,30 10-11 * * * 在上午10點到11點的第15和第30分鐘執行 * */2 * * * 每兩個小時執行一次
#該文件中所列用戶不容許使用crontab命令 /etc/cron.deny # 該文件中所列用戶容許使用crontab命令 /etc/cron.allow #全部用戶crontab文件存放的目錄,以用戶名命名 /var/spool/cron/ # crond日誌文件 /var/log/cron
一、關於從新加載配置文件進程
根據網上說的修改配置文件以後須要從新加載配置文件或者重啓crond才能生效,測試過程當中發現只要修改了配置文件便可生效,無需使用systemctl reload crond加載
二、crond報錯
(CRON) DEATH (can't lock /var/run/crond.pid, otherpid may be 8138): Resource temporarily unavailable
解決的各類姿式
一、殺掉全部crond進程,而後重啓crond服務 二、檢查你寫的配置文件是否有錯
若是以上兩條你都作了,仍是不行,兄弟,自求多福,我無能爲力(反正我是由於配置文件卡死的)