shell學習筆記之crontab

一:知識背景vim

  crontab是用來定時執行腳本的進程,crond進程每分鐘會定時檢查是否有要執行的任務。操做系統會安裝完成會默認安裝工具並自動啓動crond進程。工具

  業務上主要用於:spa

      1.系統週期性執行的清理緩衝,備份系統數據操作系統

      2.我的用戶進程的守護、定時清理日誌 命令行

二:語法知識日誌

  crontab 【-u user】【-e| -r| -l】code

 【-u user】:就是指定用戶的時程表,固然指定的前提是當前用戶權限大於指定用戶。這個能夠直接省略,就是表示以當前用戶建立、刪除或列出時程表,blog

 【-options】: -e 建立crontab文件,內定的文字編輯指定是vim,因此也是分爲命令行模式和文本模式,按i進行編輯進程

          -r 刪除當前時程表,權限約束crontab

        -l 列出當前時程表,權限約束

  crontab文件語法: crontab會進行語法檢查,vim不會

 你們看到的註釋就完美表達了crontab文件的語法

* * * * * user-name command 

五個星號表示是 分 時 每個月哪一天 月份 周幾

   * 表明不匹配  

   a-b 表示這段時間都執行

    a,b這個時間點都執行

  */n ,例如*/5 * * * * 表示每隔5分鐘執行一次,n爲執行的頻率

### crontab也分爲兩種:系統級和用戶級

  系統級位於/etc/crontab的方法只能root用戶使用,crontab -e這種所用用戶均可以使用並保存在/var/spool/cron/username,系統級任務不會寫入後者。

crontab -e 和/etc/crontab修改語法不一致,/etc/crontab多一個user指定。cron會每分鐘讀取/etc/crontab和/var/spool/cron/username中的數據內容,所以,只要編輯完/etc/crontab文件並保存以後,

crontab會執行。

  那就是 crontab -e 這個 crontab 實際上是 /usr/bin/crontab 這個運行檔,可是 /etc/crontab 但是一個純文字檔,必須用 root 的身份編輯這個文件。

 

  系統級和用戶級區別還在於:

  MailTo=root:這個字段就是每條任務調度執行完畢,系統都會將任務輸出信息經過電子郵件的形式發送給當前系統用戶,這樣日積月累,日誌信息會很是大,可能會影響系統的正常運行,所以,將每條任務進行重定向處理很是重要。通常不處理就是放在/var/mail/username,因此通常都會將日誌信息重定向到null。

  crontab -r 也只是刪除用戶級別的時程表,全部的/var/mail/username 刪除全部用戶文件,或者加上user刪除特定用戶時程表,crontab -l 顯示的任務也都是用戶級任務。

crontab有一點須要你們注意的就是:

周(f5)和 日月(f3)不能並存,好比如下的模式:

0 0 12 12 5 root echo "just test" < 錯誤的寫法

 

  原本你覺得12月12日且爲星期五纔會進行這項工做,無奈的是,系統可能會斷定每一個星期五做一次,或每一年的12月1 2日分別進行,如此一來與你當初的規劃就不同了,得要注意這個地方!上述的寫法是不對的

 2

 

 

 

 

 

  

相關文章
相關標籤/搜索