Linux進程管理及作業管理

進程管理

進程概念

  • Linux內核:搶占式多任務
  • 內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等
  • Process: 運行中的程序的一個副本,是被載入內存的一個指令集合

    • 進程ID(Process ID,PID)號碼被用來標記各個進程
      UID、GID、和SELinux語境決定對文件系統的存取和訪問權限
      通常從執行進程的用戶來繼承
      進程存在生命周期:創建運行—執行結束
  • task struct(任務結構):Linux內核存儲進程信息的數據結構格式

  • task list(任務鏈表):多個任務的的task struct組成的鏈表

  • 進程創建:

    • init:第一個進程,遵循父子關系創建進程
      進程:都由其父進程創建,CoW(寫時復制)

      • 調用的接口:fork(), clone()
    • 父進程?創建子進程

      • 子進程是因為父進程要完成的任務,而被父進程所創建;最后由父進程釋放子進程

進程優先級:

  • 優先級的劃分:

    • 0-139(CentOS4,5):

      • 實時優先級: 0-99;數字越大,優先級越高
      • 靜態優先級:100-139;數字越小,優先級越高
    • 0–98,99–99(CentOS6)

      各有140個運行隊列和過期隊列

    • nice值:-20到19,對應系統優先級100-139或99

  • Big O:時間復雜度,用時和規模的關系

    • O(1), O(logn), O(n)線性, O(n^2)拋物線, O(2^n)
  • 進程優先級調整:

    • 靜態優先級:100-139
      進程默認啟動時的nice值為0,優先級為120
      只有根用戶才能降低nice值(提高優先性)

    • nice命令:以指定的nice值啟動并運行命令
      nice [OPTION] [COMMAND [ARGU]…]

      • 選項:
        -n NICE
    • renice命令:對運行中的進程的nice值
      renice [-n] NICE PID…

    • 查看Nice值和優先級:
      ps axo pid,comm,ni

進程內存

  • 進程內存

    • Page Frame: 頁框,用存儲頁面數據,存儲Page 4k

    • LRU:Least Recently Used 近期最少使用算法,釋放內存

  • 物理地址空間:實際分給進程的空閑的不連續的頁框空間
    線性地址空間:通過虛擬后的內存空間

    • MMU(Memory Management Unit 內存管理單元):負責實時轉換線性和物理地址;

    • TLB(Translation Lookaside Buffer): 翻譯后備緩沖器,用于保存虛擬地址和物理地址映射關系的緩存

  • IPC(Inter Process Communication):進程間通信的機制

    • 同一主機:
      signal:信號
      shm(shared memory):共享內存
      semaphore:信號量,一種計數器;標記位,避免資源的互斥行為

    • 不同主機:
      rpc: remote procedure call(遠程過程調用也是基于socket完成調用的)
      socket: IP和端口號

進程類型:

  • 守護進程 | daemon | 服務:在系統引導過程中啟動的進程,與用戶無關,和終端無關進程
  • 前臺進程:跟終端相關,通過終端啟動的進程
    注意:可以相互之間轉化
    可以把服務調到前端執行,也可把在前臺啟動的進程送往后臺,以守護模式運行;

進程狀態:

  • 運行態:running | 同一時間只有部分在運行
  • 就緒態:ready
  • 睡眠態:

    • 可中斷睡眠:interruptable
      不可中斷睡眠:uninterruptable
  • 停止態:stopped,暫停于內存,但不會被調度,除非手動啟動
  • 僵死態:zombie,結束進程,父進程結束前,子進程不關閉

    • 不正常狀態,此為程序的不正常退出;進程正常退出會釋放內存
      在程序編輯的時候,養成良好習慣;釋放內存

進程的分類:

  • CPU-Bound:CPU密集型,主要是非交互式
    IO-Bound:IO密集型,主要是交互式

Linux系統上進程的查看及管理工具


  • 控制開機啟動的程序:

    • CentOS 5:SysV init
      CentOS 6:upstart
      CentOS 7:systemd

pstree

  • pstree(rpm包為psmisc*):display a tree of processes

    • 顯示進程樹中的 { 線程 }
    • -p:顯示進程號

ps

  • /proc/:內核中的狀態信息;

    • 內核參數:

      • 可設置其值從而調整內核運行特性的參數;/proc/sys/
      • 狀態變量:其用于輸出內核中統計信息或狀態信息,僅用于查看
    • 參數:模擬成文件系統類型;非參數本身被模擬成目錄,參數本身被模擬成文件;
  • 進程:Linux系統各進程的狀態信息均保存在/proc/目錄下的各文件中

  • ps – report a snapshot of the current processes
    ps [OPTION]…

    • 支持三種選項:
      UNIX選項 如-A -e
      BSD選項 如a
      GNU選項 如–help

      啟動進程的方式:
      系統啟動過程中自動啟動:與終端無關的進程
      用戶通過終端啟動:與終端相關的進程

      • 默認顯示當前終端中的進程
        a 所有終端中的進程
        x 所有與終端無關的進程
        u 選項顯示進程所有者的信息
        f 選項顯示進程的父進程
        o 屬性… :自定義要顯示的字段列表,以逗號分隔;
    • 常用組合:aux

      • PID:進程號
        VSZ: Virtual memory SiZe,虛擬內存集,線性內存
        RSS: ReSident Size, 常駐內存集,不進行交換內存
        SHM:共享內存集
        STAT:進程狀態

        • R:running;運行狀態
          S: interruptable sleeping;可中斷休眠
          D: uninterruptable sleeping;不可中斷休眠
          T: stopped;停止狀態
          Z: zombie;僵死狀態
          +: 前臺進程
          l: 多線程進程
          L:內存分頁并帶鎖
          N:低優先級進程
          <: 高優先級進程
          s: session leader,會話(子進程)發起者
    • 常用組合:-ef

      • -e: 顯示所有進程
        -f: 顯示完整格式程序信息

        • C:CPU的利用率
          PSR:運行于哪顆CPU之上
    • 常用組合:-eFH

      • -F: 顯示更完整格式的進程信息
        -H: 以進程層級格式顯示進程相關信息
    • 常用組合:自定義

      • -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,[comm|cmd]
      • axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,[comm|cmd]

        • ni: nice值,默認為0
          priority: priority 優先級,Higher number means lower priority
          psr: processor CPU編號
          rtprio: 實時優先級
    • 搜索進程

      • 日常的靈活用法:ps 選項 | 其它命令

      • ps自帶的搜索命令:pgrep

        • pgrep [options] pattern

          • pattern–指模式
            -u uid: effective user,以誰的身份運行的
            -U uid: real user,真正發起運行命令者
            -t terminal: 與指定終端相關的進程
            -l: 顯示進程名
            -a: 顯示完整格式的進程名
            -P pid: 顯示指定進程的子進程
            -t TERMINAL:與指定的終端相關的進程
      • 按確切的程序名稱查詢進程編號:/usr/sbin/pidof

        • pidof 進程名

        此處有料 /usr/sbin/pidof -> /usr/sbin/killall5
        對同一個程序,生成不同的軟鏈接,最后執行的效果不一樣;

        vim /root/bin/f1.sh
        
        #!/bin/bash
        echo "the script name is `basename $0`"  
        
        ln -s f1.sh f1link  
        ~]#f1link
        the script name is f1link
        
        ln -s f1.sh f1link2
        ~]#f1link2
        the script name is f1link2
      • windows的搜索進程:tasklist;殺進程:taskkill

系統工具

uptime:top命令中狀態欄信息的第一行

顯示當前時間,系統已啟動的時間、當前上線人數,系統平均負載(1、5、10分鐘的平均負載,一般不會超過1)

  • 系統平均負載:
    指在特定時間間隔內運行隊列中的平均進程數

  • 通常每個CPU內核的當前活動進程數不大于3,那么系統的性能良好。如果每個CPU內核的任務數大于5,那么此主機的性能有嚴重問題

  • 如果linux主機是1個雙核CPU,當Load Average 為6的時候說明機器已經被充分使用

top

  • 選項:
    -d #: 指定刷新時間間隔,默認為3秒
    -b: 以批次方式
    -n #: 顯示多少批次
  • 內部命令:

    • 排序:

      • P:以占據的CPU百分比,%CPU
        M:以占據內存百分比,%MEM
        T:以累積占據CPU時長,TIME+
    • 首部信息顯示:

      • uptime信息:l命令開關第1行信息
        tasks及cpu信息:t命令開關第2、3行信息
        cpu分別顯示:1 (數字);第3行信息
        memory信息:m命令;第4、5行
    • 退出命令:q
    • 修改刷新時間間隔:s
    • 終止指定進程:k
    • 保存文件:W
    • 欄位信息簡介

      • us:用戶空間
        sy:內核空間
        ni:調整nice后,額外多占用時間
        id:空閑時間
        wa:等待IO時間
        hi:處理硬件中斷所消耗的百分比
        si:軟件中斷所消耗的百分比(模式切換)
        cs:處理上下文切換(任務切換)所消耗的百分比
        st:虛擬機偷走的時間

htop

htop命令:從Fedora-EPEL源安裝;

  • 選項:
    -d #: 指定延遲時間;
    -u UserName: 僅顯示指定用戶的進程
    -s COLUME: 以指定字段進行排序

  • 內部命令:

    • s: 跟蹤選定進程的系統調用
      l: 顯示選定進程打開的文件列表
      a:將選定的進程綁定至某指定CPU核心
      t: 顯示進程樹

內存工具

vmstat

  • vmstat命令:虛擬內存信息

    • vmstat [options] [delay [count]]
      vmstat 2 5
    • 選項:
      -s: 顯示內存的統計數據
  • 內部顯示:

    • procs:

      • r:等待運行的進程的個數,和核心數有關;CPU上等待運行的任務的隊列長度
        b:處于不可中斷睡眠態的進程個數;被阻塞的隊列的長度;
    • memory:

      • swpd: 交換內存的使用總量;
        free:空閑物理內存總量
        buffer:用于buffer的內存總量
        cache:用于cache的內存總量
    • swap:in、out:以內存為參照物

      • si:從磁盤交換進內存的數據速率(kb/s)
        so:從內存交換至磁盤的數據速率(kb/s)
    • io:in、out:以內存為參照物

      • bi:從塊設備讀入數據到系統的速率(kb/s)
        bo: 保存數據至塊設備的速率(kb/s)
    • system:

      • in: interrupts, 中斷速率,包括時鐘;(次數/s)
        cs: context switch, 進程切換速率
    • cpu:

      • us:Time spent running non-kernel code
        sy: Time spent running kernel code
        id: Time spent idle. Linux 2.5.41前,包括IO-wait time.
        wa: Time spent waiting for IO. 2.5.41前,包括in idle.
        st: Time stolen from a virtual machine. 2.6.11前, unknown.

iostat

  • iostat:統計CPU和設備IO信息

    示例:iostat 1 10

pmap

  • pmap命令:進程對應的內存映射
    pmap [options] pid […]

    • -x: 顯示詳細格式的信
  • 另外一種查看方式:
    cat /proc/PID/maps

系統監控工具

glances

  • glances命令:從EPEL源安裝
    glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [–password] [-t refresh] [-f file] [-o output]

    • 內建hlep操作
    • 常用選項:
      -b: 以Byte為單位顯示網卡數據速率
      -d: 關閉磁盤I/O模塊
      -f /path/to/somefile: 設定輸出文件的保存目錄
      -o {HTML|CSV}:輸出格式
      -m: 禁用mount模塊
      -n: 禁用網絡模塊
      -t #: 延遲時間間隔
      -1:每個CPU的相關數據單獨顯示
  • C/S模式下運行glances命令

    • 服務器模式:
      將glances綁定在本機的IP地址上 glances -s -B IPADDR
      IPADDR: 用于監聽的本機哪個地址
    • 客戶端模式:
      glances -c IPADDR
      IPADDR:要連入的服務器端地址

dstat

  • dstat命令:系統資源統計,代替vmstat,iostat
    dstat [-afv] [options..] [delay [count]]

    • 常用選項:
      -c: 顯示cpu相關信息
      -C #,#,…,total;某顆CPU的信息和總的信息
      -d: 顯示disk相關信息
      -D total,sda,sdb,…
      -g:顯示page相關的速率數據
      -m: 顯示memory相關統計數據
      -n: 顯示network相關統計數據
      -p: 顯示process相關統計數據
      -r: 顯示io請求相關的統計數據
      -s: 顯示swapped相關的統計數據
    • –tcp
      –udp
      –unix
      –raw
      –socket
      –ipc:顯示進程間通信
      –top-cpu:顯示最占用CPU的進程
      –top-io: 顯示最占用io的進程
      –top-mem: 顯示最占用內存的進程
      –top-latency: 顯示延遲最大的進程

進程管理工具

kill

  • kill命令:

    • 向進程發送控制信號,以實現對進程管理,每個信號對應一個數字,信號名稱以SIG開頭(可省略),不區分大小寫
    • 顯示當前系統可用信號: kill –l,trap -l
    • 向進程發信號:
      kill [-s signal|-SIGNAL] pid…

      • 常用信號:man 7 signal
        1) SIGHUP: 無須關閉進程而讓其重讀配置文件
        2) SIGINT: 終止正在運行的進程;相當于Ctrl+c
        3) SIGQUIT:相當于ctrl+\
        9) SIGKILL: 強制殺死正在運行的進程
        15) SIGTERM:終止正在運行的進程;默認發送此信號
        18) SIGCONT:繼續運行;
        19) SIGSTOP:后臺休眠;
        0)檢查進程是否在運行;檢查進程編號為一個的時候使用
    • 指定信號的方法:
      (1) 信號的數字標識:1, 2, 9
      (2) 信號完整名稱:SIGHUP
      (3) 信號的簡寫名稱:HUP
  • 按PID:kill [-SIGNAL] pid …
    kill –n SIGNAL pid;kill –s SIGNAL pid

  • 按名稱一窩端:killall [-SIGNAL] comm…

  • 按模式:pkill [options] pattern

    • -SIGNAL
      -u uid: effective user,生效者
      -U uid: real user,真正發起運行命令者
      -t terminal: 與指定終端相關的進程
      -l: 顯示進程名(僅pgrep可用)
      -a: 顯示完整格式的進程名(僅pgrep可用)
      -P pid: 顯示指定進程的子進程
      pkill、pgrep:共用一個man,用法相似;

作業管理

Linux的作業控制

前臺作業:通過終端啟動,且啟動后一直占據終端;
后臺作業:可通過終端啟動,也可不通過終端啟動,但啟動后即轉入后臺運行(釋放終端)

  • 讓作業運行于后臺

    1. 運行中的作業: Ctrl+z;
      此類作業送往后臺后,作業會轉為停止態
    2. 尚未啟動的作業: COMMAND &;
      后臺作業雖然被送往后臺運行,但其依然與終端相關;退出終端,將關閉后臺作業。
    3. 如果希望送往后臺后,剝離與終端的關系

      • ~]# nohup COMMAND &
      • screen;
        COMMAND ;
        screen -r:恢復到后臺的終端中;
        相當于另起一個終端運行;
        默認輸出到當前目錄的nohup.out文件中,可以重定向到指定文件;
  • 查看所有作業:當前終端的作業

    • jobs
[root@localhost ~]# jobs
  [1]-  Stopped                 htop
  [2]+  Stopped                 ping 172.16.250.162

  注意:
  + :表示使用fg默認調出的作業;
  [#]:表示JOB_NUM
  • 作業控制:
    fg [[%]JOB_NUM]:把指定的后臺作業調回前臺
    bg [[%]JOB_NUM]:讓送往后臺的作業在后臺繼續運行
    kill %JOB_NUM:終止指定的作業;%不可省略,去掉后系統會默認為進程號

并行運行

  • 同時運行多個進程,提高效率

    • 方法1
      vim all.sh
      f1.sh&
      f2.sh&
      f3.sh&

    • 方法2
      (f1.sh&);(f2.sh&);(f3.sh&)

    • 方法3
      { f1.sh& f2.sh& f3.sh& }

    n=100;(echo $n;n=200;echo $n);echo $n
    括號內的屬于此進程的線程

Linux任務計劃、周期性任務執行


  • 未來的某時間點執行一次任務
    at
    batch:系統自行選擇空閑時間去執行此處指定的任務
  • 周期性運行某任務
    cron

at

  • 電子郵件服務:
    smtp:simple mail transmission protocol,用于傳送郵件;
    pop3:Post Office Protocol
    imap4:Internet Mail Access Protocol

    • 發送郵件:
      mailx [-s ‘SUBJECT’] username[@hostname]
      郵件正文的生成:

      1. 直接給出,Ctrl+d;
      2. 輸入重定向;
      3. 通過管道;
        echo -e “How are you?\nHow old are you?” | mail
    • 接收郵件:
      mailx

    • 查看郵件:
      mailx 郵件號

  • at命令:
    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 02:00 2016-09-20
      規定在某年某月的某一天的特殊時刻進行該項任務
    • HH:MM[am|pm] [Month] [Date]
      04pm March 17
      17:20 tomorrow
    • HH:MM[am|pm] + number [minutes|hours|days|weeks]
      在某個時間點再加幾個時間后才進行該項任務
      now + 5 minutes
      02pm + 3 days
  • at任務

    • 執行方式:
      1)交互式 2)輸入重定向 3)at –f 文件
    • 依賴與atd服務,需要啟動才能實現at任務

      • 確認at是否啟動

        • centos 6
          是否開機啟動
          chconfig –list atd

          ~]# chkconfig --list atd
          atd     0:off    1:off    2:off    3:on    4:on    5:on    6:off
          1:代表單用戶模式;
          3:代表純文本模式
          5:代表圖形頁面

          是否現在啟動
          service atd status

        • centos 7
          是否開機啟動
          systemctl is-enabled atd
          是否現在啟動
          systemctl status atd

    • at隊列存放在/var/spool/at目錄中
    • /etc/at.{allow,deny}控制用戶是否能執行at任務

      • 白名單:/etc/at.allow 默認不存在,當at.allow存在時只有該文件中的用戶才能執行at命令,不在此文件的用戶不允許;
      • 黑名單:/etc/at.deny 默認存在,拒絕該文件中用戶執行at命令,而沒有在at.deny 文件中的使用者則可執行
      • 如果兩個文件都存在時,at.allow的優先級高
      • 如果兩個文件都不存在,只有 root 可以執行 at 命令

batch

讓系統自行選擇空閑時間去執行此處指定的任務;

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命令
    • 日志:/var/log/cron
  • 系統cron任務:/etc/crontab

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    
    # For details see man 4 crontabs
    
    # 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!"   # 如果命令的路徑不在第二行的PATH變量中需指定絕對路徑,否則找不到命令;
    • 時間表示法:
      (1) 特定值
      給定時間點有效取值范圍內的值
      (2) *
      給定時間點上有效取值范圍內的所有值;表示“每…”
      (3) 離散取值:逗號分隔
      #,#,#
      (4) 連續取值
      #-#
      (5) 在指定時間范圍上,定義步長
      /#: #即為步長

      示例:每3小時echo命令
      0 */3 * * * centos /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 * * * *
    • 系統的計劃任務:
      /etc/crontab
      /etc/cron.d/ 配置文件
      /etc/cron.hourly/ 腳本
      /etc/cron.daily/ 腳本
      /etc/cron.weekly/ 腳本
      /etc/cron.monthly/腳本

  • anacron系統

    • 運行計算機關機時cron不運行的任務,CentOS6以后版本取消anacron服務,由crond服務管理
    • 對筆記本電腦、臺式機、工作站、偶爾要關機的服務器及其它不一直開機的系統很重要對很有用

      /usr/bin/on_ac_power
      echo $?
      0表示電源供電;1表示電池供電;
    • 配置文件:/etc/anacrontab,
      負責執行/etc/ cron.daily;/etc/cron.weekly ;/etc/cron.monthly中系統任務。

      • 字段1:如果在這些日子里沒有運行這些任務……
        字段2:在重新引導后等待這么多分鐘后運行它
        字段3:任務識別器,在日志文件中標識
        字段4:要執行的任務
    • 由/etc/cron.hourly/0anacron執行
    • 當執行任務時,更新/var/spool/anacron/cron.daily 文件
      的時間戳
  • 管理臨時文件

    • CentOS6使用/etc/cron.daily/tmpwatch定時清除臨時文件
    • CentOS7使用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
      /var/spool/cron/ 此目錄普通用戶不能進入,使用crontab命令可以讀取里面自己的cron計劃任務文件;
    • crontab命令:
      crontab [-u user] [-l | -r | -e] [-i]

      • -l: 列出所有任務;root查看某用戶時應-u USERNAME
        -e: 編輯任務;
        -r: 移除所有任務;
        -i:同-r一同使用,以交互式模式讓用戶有選擇的移除指定任務
        -u user: 僅root可運行,代為為指定用戶管理cron任務
    • 控制用戶執行計劃任務:/etc/cron.{allow,deny}
      同/etc/at.{allow,deny},只是針對于新建任務,已有的任務還可以執行;

      如何在秒級別運行任務?
      * * * * * for min in 0 1 2;do echo “hi”;sleep 20;done

      • sleep命令:默認是1s
        sleep NUMBER [SUFFIX]…
        SUFFIX:
        s:秒,默認
        m:分
        h:小時
        d:天
      • usleep命令:
        默認是1微秒
  • at和crontab

    • 一次性作業使用 at
    • 重復性作業使用crontab

      at 與 ceontab 比較:
      
      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任務來講,%有特殊用途;如果在命令中要使用%,則需要轉義。將%放置于單引號中,則可不用轉義

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

(0)
ss
上一篇 2017-05-08
下一篇 2017-05-08

相關推薦

  • Linux基礎之RAID

    一.RAID介紹 RAID剛開始出現的時候叫做廉價磁盤冗余陣列(Redundant Array of Inexpensive Disks),但在當時磁盤并非像現在這么便宜,反而這種組合方式使得代價非常昂貴,所以后來改名為獨立磁盤冗余陣列(Redundant Array of Independent Disks),基本的思想就是組合組合多個便宜的,性能相對較低…

    Linux干貨 2016-11-08
  • 建立yum源及yum命令的使用

    一、什么是YUM     YUM的全稱為 Yellowdog Update Modifier,其主要目的是為了解決RPM包安裝時的依賴關系的問題。YUM只是一個用于軟件安裝的前端工具,其主要的服務對象還是RPM軟件包。     YUM采用C/S架構,即客戶端與服務器的?!?/p>

    Linux干貨 2015-05-11
  • 強大的查找工具之find命令

    一、Linux中的文件查找工具     在文件系統上常常需要根據文件的各種屬性去查找符合條件的文件,此前講到的grep、egrep屬于文本過濾、文本搜索工具;而文本查找工具有兩個,local和find 二、Linux中的查找工具簡介 locate 命令 find 命令 簡介:locate屬于非實時查找,依賴于事先構建的索引;索引的創建是在…

    Linux干貨 2016-08-16
  • Linux中磁盤管理與文件系統創建掛在

    磁盤管理 Linux中哲學思想:Linux一切皆文件,所有訪問磁盤設備就如同訪問一個文件一樣,因此要想使用需要一個文件接口 如何向設備中輸入數據?     首先將設備在系統上映射成一個文件,在此文件上進行讀寫操作就相當于對設備進行讀寫,對程序而言首先是打開一個文件open(),然后執行read()或者write(),最…

    Linux干貨 2016-08-26
  • shell腳本基礎

    shell腳本基礎 基本介紹 Shell腳本與Windows/Dos下的批處理相似,也就是用各類命令預先放入到一個文件中,方便一次性執行的一個程序文件,主要是方便管理員進行設置或者管理用的。但是它比Windows下的批處理更強大,比用其他編程程序編輯的程序效率更高。換一種說法也就是,shell script是利用shell的功能所寫的一個程序,這個程序是使用…

    2017-07-01
欧美性久久久久