crontab介紹
我們時(shí)常會(huì)有一些定期定時(shí)的任務(wù)账锹,如周期性的清理一下/tmp狡赐,周期性的去備份一次數(shù)據(jù)庫盈魁,周期性的分析日志等等。而且有時(shí)候因?yàn)槟承┮蛩氐南拗票蚣睿瑘?zhí)行該任務(wù)的時(shí)間會(huì)很尷尬豆胸。本文同你一起掀開Linux系統(tǒng)自動(dòng)任務(wù)的神秘面紗。
1堡妒、基本概念
- crontab自動(dòng)任務(wù)的理解
- 用于設(shè)置周期性被執(zhí)行的指令
- 該命令讀取指令存放于crontab文件中供后續(xù)讀取和執(zhí)行
- crond為其守護(hù)進(jìn)程配乱,一般在后臺(tái)默默運(yùn)行溉卓,不間斷的檢查是否有預(yù)定的作業(yè)需要執(zhí)行皮迟。
- crontab命令的格式和參數(shù)
-
分 時(shí) 日 月 星期 <命令> <日志>
crontab格式和參數(shù).png
2、環(huán)境的準(zhǔn)備
實(shí)驗(yàn)樓的linux系統(tǒng)桑寨,默認(rèn)是沒有啟動(dòng)日志和cron守護(hù)進(jìn)程伏尼,需要手動(dòng)啟動(dòng)
- 啟動(dòng)日志的命令
- 啟動(dòng)crontab
操作截圖如下
啟動(dòng)日志和crontab
** crontab 新增任務(wù)**
- 使用vi編輯器進(jìn)行編輯,輸入i切到編輯模式

> * 查看結(jié)果
- 沒有生成文件尉尾?日志報(bào)錯(cuò)“no mta installed discarding output”
```sudo tail -f /var/log/syslog
- 查找原因爆阶,發(fā)現(xiàn) 書寫格式有誤 ,需在date之后加個(gè)空格沙咏。
*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)
crontab使用
一個(gè)是linux系統(tǒng)辨图,是存在多個(gè)用戶的,那么每個(gè)用戶建立的crontab是否會(huì)有沖突呢肢藐?當(dāng)然不會(huì)沖突故河,要是沖突,就沒有安全性和可靠性而言了吆豹。那么具體是怎么做到的呢鱼的?
1、配置文件的獨(dú)立性
- 不同用戶痘煤,在/var/spool/cron/crontabs里存在一個(gè)對(duì)應(yīng)的配置文件
- 保證了 隔離凑阶、獨(dú)立、有效
-
如下圖衷快,存在 root和shiyanlou 兩個(gè)用戶的crontab
crontab獨(dú)立性
2宙橱、守護(hù)進(jìn)程cron自動(dòng)執(zhí)行
- 在etc目錄下存在如下cron文件,這幾個(gè)文件會(huì)讓你的任務(wù)計(jì)劃安裝計(jì)劃正確執(zhí)行
- 1、 /etc/cron.daily师郑,目錄下的腳本會(huì)每天讓執(zhí)行一次哼勇,在每天的6點(diǎn)25分時(shí)運(yùn)行;
- 2呕乎、 /etc/cron.hourly积担,目錄下的腳本會(huì)每個(gè)小時(shí)讓執(zhí)行一次,在每小時(shí)的17分鐘時(shí)運(yùn)行猬仁;
- 3帝璧、/etc/cron.mouthly,目錄下的腳本會(huì)每月讓執(zhí)行一次湿刽,在每月1號(hào)的6點(diǎn)52分時(shí)運(yùn)行的烁;
- 4、 /etc/cron.weekly诈闺,目錄下的腳本會(huì)每周讓執(zhí)行一次渴庆,在每周第七天的6點(diǎn)47分時(shí)運(yùn)行;
-
如下圖所示
etc下cron文件
crontab進(jìn)階
設(shè)定crontab之后雅镊,系統(tǒng)管理員最關(guān)心的是crontab任務(wù)有沒有按照計(jì)劃執(zhí)行完畢襟雷,執(zhí)行過程中有沒有出錯(cuò)?那么我們可以通過查看日志文件來了解請(qǐng)情況仁烹。
1耸弄、crontab系統(tǒng)日志
- 默認(rèn)的系統(tǒng)日志 存在于 /var/log/syslog 文件里
自定義啟用cron日志 通過編輯 /etc/rsyslog.d/50-default.conf配置文件,達(dá)到啟用cron.log專用日志卓缰,詳見下圖
系統(tǒng)日志
2计呈、crontab執(zhí)行日志
- 在crontab命令里,可以自定義執(zhí)行日志的路徑和名稱【分 時(shí) 日 月 星期 <執(zhí)行的命令> <執(zhí)行的日志>】征唬,如下兩個(gè)實(shí)例:
(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使用同一個(gè)日志文件
- 其中总寒, 1 表示執(zhí)行的標(biāo)準(zhǔn)日志輸出 扶歪;2表示 執(zhí)行異常的日志輸出
作業(yè)
撰寫一個(gè)crontab任務(wù)計(jì)劃,使其完成在“每周日的上午8點(diǎn)自動(dòng)執(zhí)行一次備份腳本 back.sh”
- back.sh 是對(duì)該目錄/home/shiyanlou/Code下的blog目錄文件進(jìn)行壓縮打包偿乖;
結(jié)合上面設(shè)定的crontab自動(dòng)任務(wù)击罪,現(xiàn)補(bǔ)充 back.sh的腳本如下:
備份腳本
友情提示
我正在實(shí)驗(yàn)樓擼代碼,你也快來贪薪!800+編程實(shí)戰(zhàn)教程媳禁,無需搭環(huán)境,直接練習(xí)画切!用我的鏈接注冊(cè)竣稽,你我都能獲得3個(gè)實(shí)驗(yàn)豆!http://www.shiyanlou.com/register?inviter=NTY0MzE5MTkxNzAx
感謝您花費(fèi)時(shí)間閱讀這篇文章!毫别!通過上述講解是不是讓您對(duì)linux的任務(wù)計(jì)劃crontab有了進(jìn)一步的了解了呢娃弓?是的話請(qǐng)給個(gè)贊吧!