crontab介紹
我們時常會有一些定期定時的任務,如周期性的清理一下/tmp,周期性的去備份一次數據庫,周期性的分析日志等等。而且有時候因為某些因素的限制,執行該任務的時間會很尷尬。本文同你一起掀開Linux系統自動任務的神秘面紗。
1、基本概念
- crontab自動任務的理解
- 用于設置周期性被執行的指令
- 該命令讀取指令存放于crontab文件中供后續讀取和執行
- crond為其守護進程,一般在后臺默默運行,不間斷的檢查是否有預定的作業需要執行。
- crontab命令的格式和參數
-
分 時 日 月 星期 <命令> <日志>
crontab格式和參數.png
2、環境的準備
實驗樓的linux系統,默認是沒有啟動日志和cron守護進程,需要手動啟動
- 啟動日志的命令
- 啟動crontab
操作截圖如下
啟動日志和crontab
** crontab 新增任務**
- 使用vi編輯器進行編輯,輸入i切到編輯模式

> * 查看結果
- 沒有生成文件?日志報錯“no mta installed discarding output”
```sudo tail -f /var/log/syslog
報錯日志
- 查找原因,發現 書寫格式有誤 ,需在date之后加個空格。
*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)
已生成20160716142101文件
crontab使用
一個是linux系統,是存在多個用戶的,那么每個用戶建立的crontab是否會有沖突呢?當然不會沖突,要是沖突,就沒有安全性和可靠性而言了。那么具體是怎么做到的呢?
1、配置文件的獨立性
- 不同用戶,在/var/spool/cron/crontabs里存在一個對應的配置文件
- 保證了 隔離、獨立、有效
-
如下圖,存在 root和shiyanlou 兩個用戶的crontab
crontab獨立性
2、守護進程cron自動執行
- 在etc目錄下存在如下cron文件,這幾個文件會讓你的任務計劃安裝計劃正確執行
- 1、 /etc/cron.daily,目錄下的腳本會每天讓執行一次,在每天的6點25分時運行;
- 2、 /etc/cron.hourly,目錄下的腳本會每個小時讓執行一次,在每小時的17分鐘時運行;
- 3、/etc/cron.mouthly,目錄下的腳本會每月讓執行一次,在每月1號的6點52分時運行;
- 4、 /etc/cron.weekly,目錄下的腳本會每周讓執行一次,在每周第七天的6點47分時運行;
-
如下圖所示
etc下cron文件
crontab進階
設定crontab之后,系統管理員最關心的是crontab任務有沒有按照計劃執行完畢,執行過程中有沒有出錯?那么我們可以通過查看日志文件來了解請情況。
1、crontab系統日志
- 默認的系統日志 存在于 /var/log/syslog 文件里
自定義啟用cron日志 通過編輯 /etc/rsyslog.d/50-default.conf配置文件,達到啟用cron.log專用日志,詳見下圖
系統日志
2、crontab執行日志
- 在crontab命令里,可以自定義執行日志的路徑和名稱【分 時 日 月 星期 <執行的命令> <執行的日志>】,如下兩個實例:
(1) * 8 * * 0 /home/shiyanlou/mybin/back.sh 1>>/home/shiyanlou/back.log 2>>/home/shiyanlou/back.log
(2) * 8 * * 0 /home/shiyanlou/mybin/back.sh >>/home/shiyanlou/back.log 2>&1
- (1)和(2)是兩種不同的寫法,但是含義是一樣的
- 其中,“2>&1” 表示 2跟1使用同一個日志文件
- 其中, 1 表示執行的標準日志輸出 ;2表示 執行異常的日志輸出
作業
撰寫一個crontab任務計劃,使其完成在“每周日的上午8點自動執行一次備份腳本 back.sh”
- back.sh 是對該目錄/home/shiyanlou/Code下的blog目錄文件進行壓縮打包;
結合上面設定的crontab自動任務,現補充 back.sh的腳本如下:
備份腳本
友情提示
我正在實驗樓擼代碼,你也快來!800+編程實戰教程,無需搭環境,直接練習!用我的鏈接注冊,你我都能獲得3個實驗豆!http://www.shiyanlou.com/register?inviter=NTY0MzE5MTkxNzAx
感謝您花費時間閱讀這篇文章!!通過上述講解是不是讓您對linux的任務計劃crontab有了進一步的了解了呢?是的話請給個贊吧!