天天看點

linux運維實戰練習

一、總結Linux系統上的任務計劃(at、crontab)的詳細使用方法;

Linux上的任務計劃:

   任務計劃分為:

      在未來時間點一次性執行某任務,實作目标指令:at batch

      在未來時間内周期性執行某任務,crontab

電子郵件服務:

  協定:SMTP:簡單郵件傳輸協定  

              /var/spool/mail/USERNAME

              登入使用者的預設郵件目錄

        POP3:郵局協定

        imap4:網際網路通路協定

mail指令的使用:

   centos7下為mailx;

發送郵件例:

#mail root@localhost    \\-s 可代替郵件主題subject,直接回車輸入

正文;

Subject:Hi   主題

How are you   正文

How old you   正文

Ctrl+D        郵件發送

發送給localhost   本地主機;

#mail    檢視郵件資訊

& number  檢視某封郵件

輸入重定向發送郵件:

mail -s "fstab" root@localhost < /etc/fstab   \\輸入重定向<;

cat /etc/fstab | mail -s 'fstab.new' root @localhost

MUA:mail指令的簡單使用

mail指令:

   mail:進入互動式收發郵件接口;

   使用mail -s 指明subject 

   mail -s 

at指令的使用:

    一次性執行某任務;

    Ctrl+d 送出作業

    承載未來時間點運作的某作業:

    支援使用作業隊列:

        預設為a隊列;

at  [option]... TIME

    TIME:

       (1)絕對時間   HH:MM;tomorrow;

       (2)相對時間   now+時間機關   minute  hour;

       (3)模糊時間   midnight   noon   teatime   

   at -l 

   at now+3minute

常用選項:

  -q:  at作業隊列;實作相關隊列的管理;

  -f:  讀取檔案中的作業指令;可編輯一個檔案後使用檔案名進行讀取

作業,例:at -f at.list 15:15-->讀取at.list檔案中的指令在15:15分

進行作業執行;

  -l:  檢視作業隊列待運作的作業清單=atq指令

  -c:  檢視待運作作業的内容;

  -d: 删除指定作業;相當于atrm

batch:相似與at,但是不需要指定時間,時間由系統自行選擇在資源較

為空閑時,運作指定的任務。

crontab:周期性任務計劃;

    守護程序:crond,在背景出于運作狀态,進行監控。

crontab  -e 編輯任務,打開目前shell回話的預設編輯器來編輯cron任

務表;

crontab  -l 檢視任務  list

         -u user:不是管理自己的cron任務,而是指定的目标使用者,隻

有管理者可操作,不指定使用者就代表管理自己的任務。

         -r 移除所有任務

    周期性任務有兩類:

     1.系統cron任務:沒有預設運作使用者身份,需要額外指定運作者;

      在/etc/crontab   vim打開進行編輯操作;

      七個字段組成: 前5個字段來定義時間點

                    user-name:以哪個使用者的身份運作任務:

                    command to be executed:要運作的任務

     2.使用者cron任務:由某個使用者所送出,預設以送出者的身份運作,

無需額外指定運作者;

     在/var/spool/cron/USERNAME    vim指令打開編輯;

 注: 普通使用者不建議擁有此權限檢視這個檔案; 

     建議用crontab指令讓使用者管理此檔案;

        前五個為時間點,最後一個為運作任務本身

       5個時間點:

             分鐘:有效範圍為0-59minute

             小時:0-23:

             日  :1-31,不是每個月都有31号的。

             月  :1-12,

             周幾:0-7,0和7都表示周日; 

        注意:幾月幾号與周幾,不建議同時使用;

           例:6 * * * * 表示:每月每天每小時的第六分鐘

           時間點表示法:

               *:對應時間點有效取值範圍内的每個時間點

               用數字表示既定時間點;

               -:一個特定的連續時間範圍,3-7=3到7分鐘

               ,: 一個離散的時間點,3,5,7=第三和第五和第七分鐘;

               /#:表示有效時間範圍内每多少時間;用于指定頻率;

1-30/4=每一個小時的1-30分鐘每4分鐘運作一次;*/4=每4小時運作一次

,*表示小時的話;

              5 */3 * * * /bin/echo "howdy" 每三個小時運作echo查

看howdy;要給既定的分鐘才可實作,不然意義不同為三小時以後而不是

每三小時;

思考:

  如果想實作每8分鐘運作一次某任務

  如果想實作每10秒鐘運作一次某任務

了解sleep指令;

cron補充性的工具:anacron

在cron一段時間内沒有運作規定時間點執行任務的時候,立即執行此任務

一次。

(1)如何禁止crontab運作發送郵件給管理者;

      COMMAND > /dev/null

      COMMAND &> /dev/null

(2)對于crontab檔案來講:%有特殊功能,如果指令中出現%。要記得轉

義,或者用單引号對其引用。

(3)crontab的PATH變量與使用者的變量不完全相同,是以,建議在cron中

的任務要使用絕對路徑。 

題目:

1、每周一到周六的淩晨3點20分,運作cp指令對/etc/目錄進行歸檔另存,存儲位置為/backups/etc-YYYY-MM-DD

[root@localhost ~]#mkdir /backups/
[root@localhost ~]#contab -e
20 3 * * */1-6 /bin/cp /etc/ /backup/etc-$( date +\%Y-\%m-\%d )      

2、每周日淩晨2點30分,運作cp指令對/etc/fstab檔案進行備份,存儲位置為/backup/fstab-YYYY-MM-DD-hh-mm-ss;

[root@localhost ~]#mkdir /backup/fstab
[root@localhost ~]#crontab -e 
30 2 * * */0  /bin/cp /etc/fstab /backup/fstab-$( date +\%Y-\%m-\%d-\%H-\%M-\%S )      
[root@localhost ~]#mkdir /statistics/meminfo.txt
[root@localhost ~]#crontab -e
0 0 * * * /bin/echo "=================" >> statistics/meminfo.txt && /usr/bin/egrep '^(S|M)' /proc/meminfo >> statistics/meminfo.txt      

繼續閱讀