Linux運維-day24-定時任務(wù)(下部)

定時任務(wù).png

一、特殊符號補充:

容易混淆的

    */1 * * * * date >>/tmp/oldboy.txt    每個1分鐘
    * * * * * date >>/tmp/oldboy.txt      每個1分鐘
    1 * * * * date >>/tmp/oldboy.txt      每小時的第1分鐘
    -   表示范圍(09-12)
    ,   表示不連續(xù),沒有規(guī)(08,09,12)

小練習(xí):

#每天晚上09點到12點運行systemctl restart network命令
00 21-23,00 * * * systemctl restart network
#每天上午7點到12點每2個小時和晚上22點運行 systemctl restart network 命令
00 07-12/2,22 * * * systemctl restart network

一、定時任務(wù)實際備份案例※※※

#每天晚上12點打包備份/etc/目錄到/tmp下面
第一個里程碑-命令行測試(測試命令是否OK)

[root@oldboyedu ~]# tar zcf /tmp/etc-$(date +%F).tar.gz /etc/
tar: Removing leading `/' from member names
檢查是否創(chuàng)建成功
[root@oldboyedu ~]# ll /tmp
total 11428
-rw-r--r--  1 root   root   10193812 Apr 28 09:54 etc-2019-04-28.tar.gz
解壓到指定目錄,查看備份的內(nèi)容是否正確
[root@oldboyedu ~]# tar tf /tmp/etc-2019-04-28.tar.gz 
etc/fstab
etc/crypttab
etc/resolv.conf

第二個里程碑-書寫腳本并進行測試

創(chuàng)建腳本存放目錄
[root@oldboyedu ~]# mkdir /server/scripts
mkdir: cannot create directory ‘/server/scripts’: File exists(已經(jīng)存在,無需創(chuàng)建)
創(chuàng)建腳本文件
[root@oldboyedu ~]# touch /server/scripts/bak-etc.sh
vim寫入到腳本文件中
[root@oldboyedu ~]# vim /server/scripts/bak-etc.sh
tar zcf /tmp/etc-$(date +%F).tar.gz /etc/
執(zhí)行腳本是否正確
[root@oldboyedu ~]# sh /server/scripts/bak-etc.sh

第三個里程碑-寫入定時任務(wù)(每分鐘執(zhí)行,檢查)

編輯定時任務(wù)
[root@oldboyedu ~]# crontab -e
#每分鐘備份etc下的conf后綴的文件
* * * * * sh /server/scripts/bak-etc.sh                                       

:wq后檢查定時任務(wù)是否執(zhí)行成功,看以下兩點:

看結(jié)果:crontab -l 并 ll /tmp/etc-2019-04-28.tar.gz
看日志:tail -f /var/log/cron

第四個里程碑-寫入定時任務(wù)(根據(jù)要求修改時間)

00 00 * * * sh /server/scripts/bak-etc.sh                                       

注:書寫腳本排錯
1>先運行里面的腳本
2>運行腳本,顯示腳本的執(zhí)行過程sh -x /server/scripts/bak-etc.sh
??帶+的就是腳本執(zhí)行過程
??加號越多,越優(yōu)先執(zhí)行

二、定時任務(wù)坑※※※

1>書寫腳本一定要加上注釋
2>書寫定時任務(wù)的時候,盡量使用腳本
3>運行腳本的時候使用sh
4>在定時任務(wù)中%有特殊含義,相當(dāng)于回車,如實在需要,加上
5>在定時任務(wù)與腳本中,都使用絕對路徑

如果不寫絕對路徑,會取哪里找文件?
① 用戶的定時任務(wù):會去用戶的家目錄里面找
②系統(tǒng)定時任務(wù):會找根下

6>在定時任務(wù)里面,每個命令或腳本定向到空或追加到文件中※※※

預(yù)備姿勢:
    1>/dev/null(定向到黑洞)
        用法:>/dev/null 2>&1 正確的信息和錯誤的信息,都定向到黑洞中
    2>追加到文件
        >>/tmp/cron.log 2>&1 正確的信息和錯誤的信息,都定向到文件中
原因:
    如果不定向到空或追加到文件中,定時任務(wù)會以郵件的形式把輸出到屏幕的內(nèi)容,發(fā)給你
故障案例:定向任務(wù)沒有定向到空或追加到文件的故障
    1>系統(tǒng)郵件服務(wù)開啟
        你就會不斷受到郵件(You have mail in /var/spool/mail/root)
    2>系統(tǒng)郵件服務(wù)關(guān)閉(大部分情況)
        把沒有發(fā)送出去的郵件,臨時放起來(/var/spool/postfix/maildrop),這個目錄下面會有大量的小文件,回導(dǎo)致inode滿了
            關(guān)閉郵件服務(wù):
                臨時關(guān)閉:systemctl stop postfix.service
                永久關(guān)閉:systemctl disable postfix.service

7>定時任務(wù)運行腳本環(huán)境變量的問題※※※

定時任務(wù)運行腳本的時候PATH只識別/usr/bin和/bin下的命令

解決:
??①使用命令的時候使用絕對路徑
??②在腳本的開頭,重新設(shè)置下PATH

. /etc/profile
source /etc/profile

[root@oldboyedu ~]# vim /server/scripts/date_ip.sh 
#!/bin/bash
date
/sbin/ip a s eth0|awk -F'[ /]+' 'NR==3{print $3}'
#!/bin/bash
. /etc/profile
#或者source /etc/profile
date
ip a s eth0|awk -F'[ /]+' 'NR==3{print $3}'
image.png

三、檢查定時任務(wù)相關(guān)的服務(wù)是否開啟※※※

1>定時任務(wù)的服務(wù)是否運行:

    當(dāng)前定時任務(wù)是否運行
        ps -ef|grep cron
        systemctl is-active crond
    定時任務(wù)是否開機自啟動
        systemctl is-enabled crond

2>確保rsyslog(系統(tǒng)日志服務(wù))是否運行:system log

    當(dāng)前是否正在運行
        systemctl is-active rsyslog
    是否開機自啟動
        systemctl is-enabled rsyslog

注:CentosOS 6、7中是rsyslog;CentOS 5.x中是syslog

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容