天天看點

Linux之crontab與at

溫故:

         實體卷(PV):我們實際的分區(或磁盤)需要通過gdisk指令調整系統辨別符(system id)使之成為8e(LVM的辨別符),此時還要使用實體卷建立指令(pvcreate)将它轉化為LVM底層可認的實體卷(PV),之後才能将這些PV加以使用。

        卷組(VG):所謂的VG就是将所有的PV組合而成的大磁盤

        實體擴充塊(PE): LVM預設使用4MB的PE資料塊,但是LVM的LV在32位的系統上最多僅能含有65534個PE,是以預設的LVM的LV會由4MB*65534/1024=256GB,這個PE是整個LVM中最小的存儲機關,也就是說我們寫入的資料其實都是通過寫入PE來完成的,你就可以将之了解為檔案系統裡面的block.是以PE的調整就會間接的影響到LVM的容量。

       邏輯卷(LV):最終的VG還會被切成LV,這個LV就是可以被格式化使用的類似分區的東西。要注意的是LV是不可以随便指定大小的,上面我也已經說了,LV的大小雖然不能随便指定,那麼就要考慮如何改變目前這個LV内的PE總數了。

        如果對這部分内容感興趣,請看我的《​​​Linux之邏輯卷管理器​​》

知新:

        今天要說的内容主要是關于計劃任務的,關于計劃任務的概念就不去說了,你隻要知道它分為兩種情況,其一就是在一個在固定時間點做計劃好的工作,類似于Oracle資料庫的JOB,比如你可以設定這個計劃任務每天12點發一封郵件,設定它每年的一月一日重新開機一次裝置;其二就是臨時性地定制一項任務,比如設定LINUX在今天中午12點提醒自己可以吃午餐了,前者是例行性的,周而複始,後者是臨時性的,具備突發性。這就是計劃任務的兩種不同表現。

        上面說了計劃任務的種類,下面就來說一說如何實作計劃任務,要想實作這兩個功能就需要使用at和crontab這兩個好東西。接下來我會對這兩個“好東西”進行講解

        at: at是個可以處理僅執行一次就結束的指令,不過要執行at的時候,需要有atd這個服務,不然就會失效,要注意的是有些版本的Linux預設沒有開啟這個服務,不過Centos都是預設開啟的。

        crontab: crontab這個指令所設定的任務将會一直循環下去,循環的時間可以是分鐘、小時、每月、每年等等,crontab除了可以使用指令執行外,還可以編輯/etc/crontab來支援。和at指令一樣,它也需要一個服務來支援其運作,這個服務就是crond.

一、at指令的使用

        首先我們先來談談單一計劃任務的運作,也就是at這個指令的執行過程,這裡有一點是我要事先說明的,由于我的系統裡面沒有atd這個服務,是以這一次我無法給大家進行試驗,就隻能和大家談一談理論知識。既然是計劃任務,就會有産生任務的方式,at的運作方式就是使用at這個指令來産生所要運作的任務,并将這個任務以文本檔案的方式寫入/var/spool/at這個目錄内,該任務便能等待atd這個服務的使用與執行了。

        但是也不是所有的使用者都可以使用at,畢竟存在安全問題。是以就需要一些限制對at給予管控,關于這一點可以通過兩個檔案夾來确認,第一個檔案是/etc/at.allow,注意到這個檔案中的“allow”了嗎,這個檔案的意義就是寫在這個檔案中的使用者才能使用at,沒有寫在這個檔案中的使用者則不能使用at.第二個檔案是/etc/at.deny,如果之前檢視的/etc/at.allow檔案不存在,就繼續看/etc/at.deny這個檔案,寫在這個檔案中的使用者則不能使用at。如果這兩個檔案都不存在,那麼就隻有root使用者可以使用at。

關于這個at的指令我真的是不了解,而且我的系統也不支援,實在抱歉,還是和大家聊一聊另一個指令吧。

二、crontab指令的使用

        關于對計劃任務的限制,不單單隻是限制了at指令,對于crontab這個指令同樣也有着類似的限制,同樣有兩個檔案,分别是/etc/cron.allow和/etc/cron.deny,而且他們的限制與at是一樣的,寫在前者中的使用者可以使用at,寫在後者之中的使用者不可以使用at,這個時候你可能會有一個的疑惑,如果這兩個檔案同時有一個相同的使用者該如何判定呢,關于這一點早有考慮,這兩個檔案其實是存在優先級的,前者優先級高于後者,這兩個檔案隻能選擇一個來限制,個人建議兩個檔案隻保留一個即可。一般來說,系統裡預設保留的都是後者,這個時候你就可以将不能執行at的 使用者寫進去。

        當使用者使用crontab這個指令來建立計劃任務的時候,該項任務就會被記錄到/var/spool/cron中,而是以賬号來作為判斷依據的。舉例來說使用者test使用crontab之後就會形成一個新的檔案/var/spool/cron/test.但是這裡有一點是要注意的,盡可能不要使用vi去編輯這個檔案,因為你極有可能因為輸入法錯誤導緻這個檔案不可以使用。

接下來咱們就來聊一聊crontab這個指令的使用吧。

Linux之crontab與at

         我這個人比較懶,實在是懶得寫,是以就在書上拍了一張照片,大家将就着看。預設的情況下,隻要目前的使用者不在/etc/cron.deny檔案中,那麼就可以直接執行crontab -e去建立自己的任務了。

每一項任務都具有6個字段,這6個字段的意義分别是:

minute: 區間為 0 – 59

hour: 區間為0 – 23

day-of-month: 區間為0 – 31

month: 區間為1 – 12. 1 是1月. 12是12月.

Day-of-week: 區間為0 – 7. 周日可以是0或7.

簡單的說就是分時月日周。

然後再說說特殊字元的用法

Linux之crontab與at

 我們看一個具體的例子

首先我在家目錄下建立了一個名為“hahahhahahah”的檔案夾

Linux之crontab與at

 然後我會将這個檔案作為郵件發給我自己

Linux之crontab與at

 這是内容:每天的8:20給我發送hahahahhah檔案的内容

Linux之crontab與at

在下圖中可以看到确實受到了一封郵件

Linux之crontab與at

接下來去檢視該郵件 

Linux之crontab與at

 确實是我的郵件,由此可見此次計劃任務的建立成功了。

因為crontab -e 這個指令是針對把使用者的cron來設計的,如果要執行系統的例行性任務時,該如何處理呢?這個時候就需要編輯/etc/crontab這個檔案了,我們先看一看這個檔案

Linux之crontab與at

 真正修改的時候,使用vi/vim對其進行修改就好了