定時任務

定時任務的使用

*      *     *      *       *  command to be executed 
分     時    日     月     周   需要執行的命令/腳本

0-59 0-23 1-31 1-12 0-6

          • 命令 :每分鐘執行一次
            /10 * 命令:每隔十分鐘運行一次

定時任務書寫流程

2.1 測試命令是否正確
2.2 把命令寫入腳本
2.3 測試腳本是否能執行成功
2.4 把腳本寫入定時任務

定時任務練習題

3.1 每5分鐘同步一次系統的時間
3.1.1 第一個里程碑--命令行測試命令是否能執行成功
[root@oldboyedu42 ~]# /usr/sbin/ntpdate ntp1.aliyun.com

3.1.2 第二個里程碑-- 寫入定時任務
#sync time by zhao 2017
/5 * /usr/sbin/ntpdate ntp1.aliyun.com

3.1.3 第三個里程碑--檢查結果
修改系統時間,查看是否會自動恢復
[root@oldboyedu42 ~]# date -s "+100year"
Tue Nov 9 09:32:32 CST 2117
查看定時任務是否執行

3.2 每分鐘追加oldboy到/oldboy/oldboy.txt
[root@oldboyedu42-lnb ~]# #每分鐘顯示系統的時間(年-月-日小時) 追加到/oldboy/time.log
3.2.1 第1個里程碑-命令
[root@oldboyedu42-lnb ~]# date +%F
%H
2017-11-0910
[root@oldboyedu42-lnb ~]# date +%F
%H >>/oldboy/time.log
[root@oldboyedu42-lnb ~]# cat /oldboy/time.log
2017-11-0910
3.2.2 第2個里程碑-把命令寫入腳本中並運行
[root@oldboyedu42-lnb ~]# mkdir -p /server/scripts
[root@oldboyedu42-lnb ~]# cat /server/scripts/time.sh
date +%F
%H
[root@oldboyedu42-lnb ~]#
[root@oldboyedu42-lnb ~]# cat /server/scripts/time.sh
date +%F_%H
[root@oldboyedu42-lnb ~]# sh /server/scripts/time.sh
2017-11-09_10
3.2.3 第三個里程碑--把腳本寫入定時任務
[root@oldboyedu42-lnb ~]# crontab -l
#print time to file xx xxxxxxxx

          • /bin/sh /server/scripts/time.sh

    >/oldboy/time.log
    [root@oldboyedu42-lnb ~]#
    [root@oldboyedu42-lnb ~]# crontab -l |tail -2
    #print time to file xx xxxxxxxx

          • /bin/sh /server/scripts/time.sh

>/oldboy/time.log

3.2.4 第4個里程碑-檢查
[root@oldboyedu42-lnb ~]# tail /var/log/cron
Nov 9 11:05:01 oldboyedu42-lnb CROND[12091]: (root) CMD (/bin/sh /server/scripts/time.sh

>>/oldboy/time.log)

[root@oldboyedu42-lnb ~]# tail -f /oldboy/time.log
2017-11-09_10
2017-11-09_11
2017-11-09_11

第4章 打包備份/etc/services (每天凌晨2點) 要求每天的名字不同
4.1 第1個里程碑-命令
#tar zcf /tmp/ser.tar.gz /etc/services
#tar zcf /tmp/ser-2017-11-11.tar.gz /etc/services
#tar zcf /tmp/ser-date +%F命令的結果.tar.gz /etc/services
#tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
[root@oldboyedu42-lnb ~]# tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
tar: Removing leading `/' from member names
[root@oldboyedu42-lnb ~]# tar tf /tmp/ser-2017-11-09.tar.gz
etc/services
[root@oldboyedu42-lnb ~]#

4.2 第2個里程碑-創建腳本
[root@oldboyedu42-lnb ~]# cat /server/scripts/bak-ser.sh
tar zcf /tmp/ser-$(date +%F).tar.gz /etc/services
[root@oldboyedu42-lnb ~]# sh /server/scripts/bak-ser.sh
tar: Removing leading `/' from member names
[root@oldboyedu42-lnb ~]#
[root@oldboyedu42-lnb ~]# ll /tmp/ser-2017-11-09.tar.gz
-rw-r--r-- 1 root root 127314 Nov 9 12:19 /tmp/ser-2017-11-09.tar.gz
[root@oldboyedu42-lnb ~]# date
Thu Nov 9 12:20:20 CST 2017

4.3 第3個里程碑-寫入定時任務-每分鐘運行
[root@oldboyedu42-lnb ~]#
[root@oldboyedu42-lnb ~]# crontab -l
#backup /etc/services xx xxxxxxxx

          • /bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1
            [root@oldboyedu42-lnb ~]# ll /tmp/
            -rw-r--r-- 1 root root 127314 Nov 9 12:28 ser-2017-11-09.tar.gz
            [root@oldboyedu42-lnb ~]# date
            Thu Nov 9 12:28:11 CST 2017
            [root@oldboyedu42-lnb ~]#
            [root@oldboyedu42-lnb ~]# tail /var/log/cron
            Nov 9 12:27:01 oldboyedu42-lnb CROND[35602]: (root) CMD (/bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1 )
            Nov 9 12:28:02 oldboyedu42-lnb CROND[35610]: (root) CMD (/bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1 )
            4.4 第4個里程碑-修改定時時間
            [root@oldboyedu42-lnb ~]# crontab -l|tail -2
            #backup /etc/services xx xxxxxxxx
            00 02 * /bin/sh /server/scripts/bak-ser.sh >/dev/null 2>&1

9句箴言

5.1 定時任務規則之前加註釋
5.2 使用腳本代替命令行任務(超過兩條命令都是用腳本)
5.3 定時任務中date命令%百分號
5.4 運行腳本一定要用/bin/sh或sh
5.5 定時任務中-命令或腳本結果(正確或錯誤)定向到黑洞或追加到文件
5.6 避免不必要的程序及命令輸出
5.7 打包壓縮使用相對路徑
5.8 定時任務腳本中的程序命令/文件 儘量使用絕對路徑
5.9 系統與命令位置有關的環境變量問題

第6章 【企業案例】如果定時任務規則結尾不加>/dev/null 2>&1或者追加到文件中>>/tmp/oldboy 2>&1

6.1 定時任務中-命令或腳本結果(正確及錯誤)定向到黑洞(>/dev/null 2>&1)
##定向到 >dev/null 2>&1 ==== >dev/null 2>/dev/null
##追加到文件 >>/tmp/oldboy.txt 2>&1

  2>&1  很容易導致硬盤inode空間被沾滿,從而系統服務不正常

定時任務中 命令腳本的結果 沒有定向到空或文件中

6.2 郵件軟件配置文件 /etc/init.d/postfix status 查看是否運行

6.3 .郵件的軟件沒有開啓---大量小文鍵堆積在/var/spool/postfix/maildroop--導致inode滿了

6.4 郵件軟件開啓了-----定時任務會不斷的給root用戶發郵件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章