Linux任務計劃管理

1.基礎概念linux

Linux能夠經過atbatch來設定任務執行計劃,讓任務在指定時間點運行,運行的結果將會以郵件的形式告知給設定運行計劃的用戶。若是須要週期性運行某任務則要用到cron命令服務器

 

2.相關命令ide

2.1mailx工具

用途:mailxlinux的內置郵箱處理工具,能夠用來查看發送郵件。通常電子郵件服務包含以下三種協議smtp(簡單郵件傳輸協議,用於傳送郵件)、pop3(郵局協議,用來收郵件)、imap(因特網郵件傳輸協議,用來收郵件)。Imap郵件協議目前在企業中使用比較普遍,他能與服務器完成雙向同步,比較適合多客戶端操做。spa

郵件查看:orm

[root@localhost ~]# mailx                        ####輸入mailx命令隊列

Heirloom Mail version 12.5 7/5/10.  Type ? for help.進程

"/var/spool/mail/root": 4 messagescrontab

>   1 user@localhost.local  Thu Mar  9 15:43  90/2906  "[abrt] full crash report"             #### ip

            2 root                  Sat Jun  3 09:40  49/1208  "Output from your job        3"   ####

            3 root                  Sat Jun  3 15:34  16/542   "Output from your job        4"   ####

           4 root                  Sat Jun  3 20:40  19/623   "Hi                            ####

           &  

?註釋:

           #(數字)+ 回車:查看指定序號的郵件

           delete  #(數字)+ 回車:刪除指定序號的郵件

           l + 回車:列出能夠操做的全部命令

           q + 回車:退出mailx命令。

發送郵件:

mailx [-s 'SUBJECT'] username[@hostname]

郵件正文的生成:

                    (1) 直接給出,Ctrl+d;

                    (2) 輸入重定向;

                    (3) 經過管道;

                             echo -e "How are you?\nHow old are you?" | mail

 

2.2 at

用途:用於管理計劃做業任務。

格式:at [ option ] TIME

           TIME:

                    HH:MM [ YYYY-mm-dd ] :指定具體幾點幾分執行,還能夠加上年月日

                    noon:指定中午執行

                    midinight:午夜12點執行

                    teatime:下午茶時間執行,通常在下午5

                    now + #minutes,hours,days,weeks:如今時間爲基點,多少分、小時、天、周後執行

經常使用選項:

           -q QUEUE:使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者能夠同時使用多個 queue

           -l :列出指定隊列中等待運行的做業,至關於atq

           -d:刪除指定做業,至關於atrm

           -c:查看具體的做業任務

           -f /path/form/somefile :從指定文件中讀取任務

 

2.3 batch

用途:batch實際上也是調用at,讓系統自動選擇空閒時間去執行此處指定的任務;

2.4 cron

功能:管理週期性任務。

簡介:

相關的程序包:

                    croniecron主程序包,提供了crond守護進程及相關輔助工具,若是要運行cron先使用systemctl status crondCentOS 7/service crond statusCentOS 6)命令確認crond是否運行。

                    cronie-anacroncronie的補充程序,用於監控cronie任務執行的狀況,若是cronie程序設置的任務在設定的時間點未執行,則anacron會在隨後啓動一次此任務。

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

系統cron任務:

經過編輯 /etc/crontab 文件來實現,編輯/etc/crontab文件這種方式僅限於root用戶使用。

                             # 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    

示例:晚上9點10分備份一次 /etc  到/root/bakup下。

         # 10 21 * * * user-name cp -a /etc/root/bakup/

時間表示方法:

(1)   特定值:給定有效時間點,例如上述示例,指定晚上9點10分,經過10 21 * * * 來表示

(2)   * :給定時間點上全部有效值,好比將*寫在分鐘裏則表示每分鐘

(3)   離散取值 ,:指定某幾個不連續的時間點例如「0 0 * * 1,3,5 」則表示每週1、3、五的00:00執行做業

(4)   連續取值 -:指定一個取值範圍,例如「0 1-3 * * *」則表示在天天1點、2點、3點執行做業。

(5)   定義步長 / :在指定的範圍內定義步長,好比「*/10 * * * *」則表示每10分鐘執行一次做業。即10分、20分、30分、40分、50分、60分各執行一次做業。

 

用戶cron任務:

    用戶使用crontab命令來定義週期性計劃任務,每一個用戶都有一個專用的文件放置於/var/spool/cron/USERNAME,可是除root外的其餘用戶沒有查看、編輯此文件的權限,只能經過crontab命令將計劃任務按照規定格式寫入到此文件中。

    格式:crontab [ -u user ] [ -l | -r | -e ] [ -i ]

    參數:

        -l :列出當前用戶全部的任務

        -e :編輯任務

        -r :移除全部任務

        -i :同-r一塊兒使用,以交互式模式讓用戶有選擇的移除指定任務

 

        -u user :僅root用戶可運行,root用戶可代其餘用戶管理cron任務

 

sleep命令:

    用途:指定休眠時間,配合crontab可實現非秒級或不能被整除的時間表示

    格式:sleep NUMBER [ SUFFIX ]

        SUFFIX:

            s :秒,若是不填寫suffix,默認都是秒

            m :分

            h:小時

            d:天

 

    注意點:

(1)   因爲cron執行任務時使用的是本身的環境變量,因此建議使用命令的絕對路徑。

(2)   因爲運行結果都會以郵件通知相關用戶,COMMAND > /dev/null表示只將執行錯誤的信息郵件通知用戶,COMMAND &> /dev/null 表示不經過郵件通知相關用戶執行結果

(3)   對於cron任務來講,%有特殊用途,因此命令中如果要使用%必須使用轉義符\,不過若是把%放置於單引號中可不轉義

 

示例:

(1)   在/root目錄下有一個文件1,每10秒將date執行結果追加到文件1中。

[root@localhost cron]# crontab -e

no crontab for root - using an empty one

* * * * * sleep 10;date>>/root/1

* * * * * sleep 20;date>>/root/1

* * * * * sleep 30;date>>/root/1

* * * * * sleep 40;date>>/root/1

* * * * * sleep 50;date>>/root/1

~                                                                                                     

~                                                                                                     

~                                                                                                                                                                                                          

"/tmp/crontab.rZAyFQ" 5L, 165C written

crontab: installing new crontab

[root@localhost ~]# cat 1

Tue Jun  6 16:03:12 CST 2017

Tue Jun  6 16:03:22 CST 2017

Tue Jun  6 16:03:32 CST 2017

Tue Jun  6 16:03:42 CST 2017

Tue Jun  6 16:03:52 CST 2017

Tue Jun  6 16:04:11 CST 2017

Tue Jun  6 16:04:21 CST 2017

Tue Jun  6 16:04:31 CST 2017

Tue Jun  6 16:04:41 CST 2017

Tue Jun  6 16:04:51 CST 2017

Tue Jun  6 16:05:11 CST 2017

(2)   每4小時備份一次/etc目錄至/root/backup目錄中,保存的文件名稱格式爲「etc-yyyy-mm-dd-HH.tar.xz」。

* */4 * * * cp -a /etc /root/backup/etc;tar -Jcf /root/backup/etc-`date '+%Y-%m-%d-%H'`.tar.xz /root/ba

ckup/etc

(3)   每週2, 4, 7備份/var/log/messages文件至/logs目錄中,文件名形如「messages-yyyymmdd」

* * * * 0,2,4 cp -a /var/log/messages /logs/messages-`date '+%Y%m%d'`

(4)   每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加至/tmp/meminfo.txt文件中

* */2 * * * cat /proc/meminfo|grep ^[SM].* >> /tmp/meminfo.txt

(5)   工做日時間內,每小執行一次「ip addr show」命令

* */1 * * 1-5 ip addr show

相關文章
相關標籤/搜索