任務計劃配置

    任務計劃:

        linux任務計劃,週期任務執行

        未來的某個時間點執行一次任務:at,batch:系統自行選擇空閒時間去執行此處指定的任務

        週期性運行某任務:cron   

    at [option] TIME

    常用選項:

        -V 顯示版本信息

        -l 列出指定隊列中等待運行的作業,相當於atq

        -d 刪除指定的作業;相當於atrm

        -c 查看具體作業任務

        -f /path/from/somefile;從指定的文件中讀取任務

        -m 當任務被完成之後,將給用戶發送郵件,即使沒有標準輸出。

        注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶

        TIME:定義出什麼時候進行 at 這項任務的時間

            HH:MM[yyyy-mm-dd]

            noon,midnight,teatime(4pm)

            tomorrow

            now+#(minutes,hours,days,OR weeks)

   at時間格式:

           HH:MM 02:00

           在今日的HH:MM進行,若該時刻已過,則明天此時執行任務。

           HH:MM YYYY-MM-DD 04:00 2016-10-14

           規定在某年某月的某一天的特殊時刻進行該項任務

           HH:MM[am|pm][Month][Date]

           04pm March 17

           17:20 tomorrow

           HH:MM[am|pm] + number [minutes|hours|days|weeks]

           在某個時間點再加上幾個時間後才進行該項任務

           now + 5 minutes

           04pn + 3 days

   執行方式:

           1)交互式 2)輸入重定向 3)at -f文件

           依賴與atd服務,需要啓動才能實現at任務

           at隊列存放在/var/spool/at目錄中

           通過/etc/at.{allow,deny}控制用戶是否能執行at任務

           先尋找/etc/at.allow 文件,文件中的使用者才能使用at,沒有在這個文件中的使用者則不能使用at(即使沒有寫在at.deny當中)

           如果/etc/at.allow 不存在,就尋找/etc/at.deny 這個文件 若寫在這個at.deny 的使用者則不能使用at,而沒有在這個at.deny文件中的使用者則可使用at 命令

           如果兩個文件都不存在,只有root可以使用at這個命令。

   

  週期性任務計劃cron

   相關的程序包;

           cronie:主程序包,提供crond守護進程及相關輔助工具。

           cronie-anacron:cronie的補充程序;用於監控cronie任務執行狀況,如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨後啓動一次此任務

           crontabs:包含centos提供系統維護任務

  計劃任務:

  確保crond守護處於運行狀態:

    centos 7:

              systemctl status crond

     centos 6:

             service crond status

  計劃週期性執行的任務提交給crond,到指定時間會自動運行

     系統cron任務:

            系統維護作業

            /etc/crontab

     用戶cron任務:

               crontab -e

          日誌: /var/log/cron

     系統cron任務: /etc/crontab

    註釋行以#開頭

    詳情參見 man 5   crontab

          # example of job definition

          # .---------------- minute (0 - 59)

        # | .------------- hour (0 - 23)

        # | | .---------- day of month (1 - 31)

        # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

        # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR

        sun,mon,tue,wed,thu,fri,sat

        # | | | | |

        # * * * * * user-name command to be executed

    時間表示法:

        (1)特定值:

            給定時間點有效取值範圍內的值

        (2)*:

            給定時間點上有效取值範圍內的所有值

            表示“每...”

        (3)高散取值:

            #,#,#

        (4)連續取值:-

            #-#

        (5)在指定時間範圍上,定義步長

            /#:#即爲步長


        時間格式:

             @reboot Run once after reboot.   重啓執行任務

             @yearly   0 0 1 1 *每年1月1號執行任務

             @annually 0 0 1 1 *  每年1月1號執行任務

             @monthly  0 0 1 * *每月1號執行任務

             @weekly   0 0 * * 0每週執行任務

             @daily    0 0 * * *每天執行任務

             @hourly   0 * * * *每小時執行任務

        系統的計劃任務:

            /etc/crontab

            /etc/cron.d/  配置文件

            /etc/cron.hourly/ 腳本

            /etc/cron.daily/  腳本

            /etc/cron.weekly/ 腳本

            /etc/cron.monthly/腳本

        cron服務介紹:

            運行計算機關機時cron不運行的任務, CentOS6.0以後版本取消anacron服務,由crond服務管理。

            假設計算機沒有一直開機

            對筆記本電腦、臺式機、工作站及其它不一直開機的系統很重要

            對偶爾要關機的服務器很有用

            配置文件: /etc/anacrontab,負責執行/etc/cron.daily /etc/cron.weekly /etc/cron.monthly中系統任務。 /etc/cron.hourly/由/cron.d/0hourly執行

            字段1:如果在這些日子裏沒有運行這些任務……

            字段2:在重新引導後等待這麼多分鐘後運行它

            字段3:任務識別器,在日誌文件中標識

            字段4:要執行的任務

        管理臨時文件:

            rhel6.0使用/etc/cron.daily/tmpwatch定時清除臨時文件。

            rhel7.0使用systemd-tmpfiles-setup服務實現

        配置文件:

            /etc/tmpfiles.d/*.conf

            /run/tmpfiles.d/*.conf

            /usr/lib/tmpfiles/*.conf

            /usr/lib/tmpfiles.d/tmp.conf

            d /tmp 1777 root root 10d

            d /var/tmp 1777 root root 30d

        命令:

            systemd-tmpfiles –clean|remove|create configfile

        計劃任務:

        用戶cron:

            crontab命令定義,每個用戶都有專用的cron任務文件:

            /var/spool/cron/USERNAME

        crontab命令:

            crontab [-u user] [-l | -r | -e] [-i]

            -l: 列出所有任務;

            -e: 編輯任務;

            -r: 移除所有任務;

            -i:同-r一同使用,以交互式模式移除指定任務

            -u user: 僅root可運行,指定用戶管理cron任務

        控制用戶執行計劃任務:

            /etc/cron.{allow,deny

            at和crontab

            一次性作業使用 at

            重複性作業使用crontab

            Create at time crontab -e

            List at -l crontab -l

            Details at -c jobnum N/A

            Remove at -d jobnum crontab -r

            Edit N/A crontab -e

            沒有被重定向的輸出會被郵寄給用戶

            根用戶能夠修改其它用戶的作業

        計劃任務

         注意:運行結果的標準輸出和錯誤以郵件通知給相關用戶

               (1)COMMAND > /dev/null

             (2) COMMAND &> /dev/null

         對於cron任務來講,%有特殊用途,如果在命令中要使用%,則需要轉義,不過,如果把%放置於單引號中,也可以不用轉義

         運行秒級別任務?

              可以直接寫爲 * * * * * sleep 20 sh /home/test.sh

             或者* * * * * for min in 0 1 2; do echo "hi"; sleep 20;done

         sleep命令:

            sleep NUMBER[SUFFIX]...

          SUFFIX:

            s: 秒, 默認

            m: 分

            h: 小時

            d: 天

        案例練習:

            01 * * * * ntpdate time.windows.com

            

            上面的例子表示每小時01分同步一次系統時間。

            

            59 23 * * * /etc/init.d/httpd restart

            上面的例子表示每晚的23:59重啓apache。

            

            45 4 1 * * /etc/init.d/httpd restart

            

            上面的例子表示每月1日的4:45分重啓apache。

            

            45 4 1,10,22 * * /etc/init.d/httpd restart

            上面的例子表示每月1、10、22日的4 : 45重啓apache。

            

            10 1 * * 6,0 /usr/local/apache/bin/apachectl restart

            上面的例子表示每週六、週日的1 : 10重啓apache。

            

            0,30 18-23 * * * /usr/local/apache/bin/apachectl restart

            上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啓apache。

            

            0 23 * * 6 /usr/local/apache/bin/apachectl restart

            上面的例子表示每星期六的晚上11 : 00 pm重啓apache。

            

            * */1 * * * /usr/local/apache/bin/apachectl restart

            每一小時重啓apache

            

            * 23-7/1 * * * /usr/local/apache/bin/apachectl restart

            晚上11點到早上7點之間,每隔一小時重啓apache

            

            0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart

            每月的4號與每週一到週三的11點重啓apache

            

            0 4 1 jan * /etc/init.d/httpd restart

            一月一號的4點重啓apache

            

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