Linux任務計劃


    任務計劃分類:
    一次性任務計劃:只執行一次就結束                at batch
    周期性任務計劃:每隔一定的周期去做相同的事情    cron

    作業的執行結果以郵件通知給相關用戶
    mail- send and receive internet mail  使用mail命令查看用戶郵件

    (1)at命令:
        at [option] TIME
        option:
            -l: 列出指定隊列中等待運行的作業;相當于atq
            -d: 刪除指定的作業;相當于atrm
            -c: 查看具體作業任務
            -f /path/from/somefile:從指定的文件中讀取任務 -m:當任務被完成之后,將給用戶發送郵件,即使沒有標準輸出
    
        TIME:定義出什么時候進行 at 這項任務的時間
            HH:MM [YYYY-mm-dd]
            HH:MM  02:00 在今日的 HH:MM 進行,若該時刻已過,則明天此時執行任務
            HH:MM[am|pm] + number [minutes|hours|days|weeks]

        執行方式:
            1、交互式2、輸入重定向3、at -f文件
            at 交互模式下是不是輸錯一次就要推倒重來
            不需要,ctrl+backspace 可以退格
        
        附加知識點:
        1、at隊列存放在/var/spool/at目錄中
        
        2、黑白名單
        白名單/etc/at.allow默認不存在
        黑名單/etc/at.deny默認存在
        只要/etc/at.allow存在,則只有該文件中的用戶和root可以執行at命令(此時deny文件可以視為無效)
        如果/etc/at.allow不存在,
        1)/etc/at.deny存在,只有deny文件中的用戶被拒絕執行at命令
        2)/etc/at.deny不存在,只有root用戶可以執行at命令

      (2)batch命令:
          讓系統自行選擇空閑時間去執行此處指定的任務

      (3)cron
          相關程序包:cronie,cronie-anacron,crontabs
          確保crond守護進程處于運行狀態:
          centos 7:systemctl status crond
          centos 6:service crond status

          3.1系統cron任務
          編輯/etc/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
              例如:晚上9點10分運行echo命令:
                  10 21 * * * gentoo /bin/echo “Howdy!”

              時間表示法:
                  1、特定值
                      給定時間點有效取值范圍內的值
                  2、*
                      給定之間點上有效取值范圍內的所有值
                  3、離散取值:,
                      #,#,#
                  4、連續取值:-
                      #-#
                  5、在指定時間范圍上,定義步長:
                      /#:#即為步長

                  示例:每3小時echo命令:
                      * */3 * * * gentoo /bin/echo “howdy!”錯誤
                      較小的時間范圍需要指定特定的時間,否則相當于小時間范圍內全部取值均執行
                      1 */3 * * * gentoo /bin/echo “howdy!”

                  @reboot     Run once after reboot.
                  @yearly     0 0 1 1 *
                  @annually     0 0 1 1 *
                  @monthly     0 0 1 * *
                  @weekly     0 0 * * 0
                  @daily         0 0 * * *
                  @hourly     0 * * * *
                  注:上面其中表達方式可以用來代替五顆星的位置

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

            crontab  [-u user] [-l|-r|-e] [-i]
                -l:列出所有任務
                -e:編輯任務
                -r:移除所有任務
                -i:同-r一同使用,交互式模式讓用戶有選擇地移除指定任務
                注:在所有任務中去刪除特定任務,也可以crontab -e打開編輯器,刪除特定行即可          
                -u user:root用戶專用,代為為指定用戶管理cron任務

         at和crontab
           一次性作業使用at
           重復性作業使用crontab
           沒有被重定向的輸出會被郵寄給用戶
           根用戶能夠修改其他用戶的作業

    注意:
    1)運行結果標準輸出和錯誤以郵件通知給相關用戶;
    2)對于cron任務來講,%有特殊用途,在命令中要使用%,則需要轉義;單引號隔絕引用,使用單引號不用轉義

    練習:

      1、每天的2點和12點整,將/etc備份至/testdir/backup目 錄中,保存的文件名稱格式為“etcbak-yyyy-mm-ddHH.tar.xz”

    mkdir /testdir/backup
    crontab -e
    0 2,12 * * * /bin/tar -Jcf /testdir/backup/etcbak-`date +'%F'`.tar.xz /etc

    2、每周2,4,7備份/var/log/messages文件至/logs目錄中,文件名形如“messages-yyyymmdd”

    mkdir /logs
    crontab -e
    0 0 * * 2,4,7 /var/log/messages /logs/messages-$(date +'%Y%m%d')

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

    crontab -e
    1 */2 * * * /bin/grep -E "^(S|M)" /proc/meminfo >>/meminfo.txt

    4、工作日時間內,每小時執行一次“ip addr show”命令

    crontab -e
    1 * * * 1-5 /sbin/ip addr show 

    5、工作日時間,每10分鐘執行一次磁盤空間檢查,一旦發現任何分區利用率高于80%,就執行wall警報。

    cd /bin
    vim chkdisk.sh
    block_used=df|grep -E "^/dev/sd"|tr -s " "|cut -d" " -f5|cut -d% -f1
    inode_used=df -i|grep -E "^/dev/sd"|tr -s " "|cut -d" " -f5|cut -d% -f1
    if [ block_used -gt 80 || inode_used -gt 80 ];then
        wall disk is full
    fi
    chmod +x chkdisk.sh
    crontab -e
    */10 * * * * chkdisk.sh 

    想了一下,這種方法是有缺陷的。當多個磁盤使用率同時超過80%時,無法進行正確的判斷

    注意:使用which或者whereis可以查詢命令的絕對路徑,用來幫助寫cron任務計劃。

原創文章,作者:maru,如若轉載,請注明出處:http://www.www58058.com/75070

(0)
marumaru
上一篇 2017-05-08
下一篇 2017-05-09

相關推薦

  • nginx AIO機制與sendfile機制

    nginx AIO機制與sendfile機制 從0.8.11版本開始, nginx 開始支持Linux native aio,如何在nginx里配置使用這套機制是本文介紹的重點。在下面的示例配置中,幾個重要相關選項的具體含義如下: aio: Syntax: aio on | off | sendfi…

    Linux干貨 2016-10-27
  • nginx+tomcat+memcached構建session共享集群

    一、安裝配置tomcat 配置前說明: 系統為centos7 m1.xsllqs.com地址為192.168.1.107 c1.xsllqs.com地址為192.168.1.114 c2.xsllqs.com地址為192.168.1.113 安裝tomcat需要配合JDK使用,JDK有oracle JDK和open JDK兩種 oracle JDK8的下載地…

    Linux干貨 2016-06-26
  • N26-第一周

    描述計算機的組成及功能。 計算機主要由運算器,控制器,存儲器,輸入、輸出設備五大部件組成 運算器(Arithmetic Logic Unit, ALU):實現各種算數運算和邏輯運算(與控制器組成cpu)。 控制器(Control Unit, CU):計算機控制中心,根據程序規定的控制程序進行解釋,根據要求進行調度,控 制協調各部分有條不紊的運行。 存儲器(M…

    Linux干貨 2017-02-03
  • 基礎網絡配置

    配置文件: /etc/ude /proc/sys/net/ipv4/ip_forward /etc/sysconfig/network-scripts/ifcfg-IFACE 網絡配置文件 /etc/sysconfig/network-scripts/route-IFACE 路由配置文件 配置文件里的設置: DEVICE:此配置文件應用到的設備 HWADDR…

    Linux干貨 2017-05-08
  • Linux命令的使用格式以及命令幫助信息的獲取方式

    1.Linux系統上的命令使用格式 2.Linux系統程序文件存放位置 3.Linux獲取命令的幫助信息 區分內部命令和外部命令 內部命令在系統啟動時就調入內存,是常駐內存的,所以執行效率高。 外部命令是系統的軟件功能,用戶需要時才從硬盤中讀入內存。 #type COMMAND 內部命令獲取幫助信息:#help COMMAND 外部命令獲取幫助信息…

    Linux干貨 2016-10-29
  • M22 使用光盤修復Centos實驗初探

    實驗目的: 服務器由于文件丟失等原因造成無法啟動,可以使用光盤引導啟動服務器,然后對服務器進行修復。 實驗環境: VMware12安裝Centos6.8虛擬機 Centos6.8的光盤鏡像 實驗原理: 手動刪除虛擬機上的rpm程序文件,使用光盤鏡像恢復安裝rpm程序。 實驗過程: 1、     執行命令刪除rpm程序,…

    2017-03-06
欧美性久久久久