linux進程管理

linux系統進程查看及管理工具

對于服務器來說重要的IO 設備
磁盤
網絡

pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall…..

pstree命令:

pstree-display a tree of processes
-p 顯示進程樹進程的pid

[root@localhost ~]# pstree
systemd─┬─NetworkManager─┬─dhclient
        │                └─2*[{NetworkManager}]
        ├─abrt-watch-log
        ├─abrtd
        ├─alsactl
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─bluetoothd
        ├─chronyd
        ├─crond
        ├─cupsd
        ├─dbus-daemon
        ├─gssproxy───5*[{gssproxy}]
        ├─login───bash
        ├─lsmd
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rngd
        ├─rsyslogd───2*[{rsyslogd}]
        ├─smartd
        ├─sshd───sshd───bash───pstree
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─wpa_supplicant

ps

給當前系統進程做一個快照。直顯示命令執行那一刻的狀態。

/proc/:內核中的狀態信息
    內核參數:
        可設置其值從而調整內核運行特征的參數
        狀態變量:其用于輸出內核中統計信息或狀態信息,僅用于參看。
參數:模擬成文件系統類型;

進程:
    /proc/
        都有一個與其進程號相同的目錄。

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

ps有三種風格的選項
有必須帶-
有的必須不能帶-
有的必須–

常用方式

a與終端相關的進程
x與終端無關的進程
u與用戶相關的進程

o 指定要顯示的內容

[ ] 內核啟動的線程

USER PID %CPU %MEM   VSZ  RSS TTY  STAT START  TIME COMMAND

VSZ: Virtual memory SiZe,虛擬內存集,線性內存
RSS: ReSidentSize, 常駐內存集
STAT:進程狀態
    R:running
    S: interruptables leeping    可中斷的
    D: uninterruptable sleeping  不可中斷的
    T: stopped
    Z: zombie
    +: 前臺進程
    l: 多線程進程
    N:低優先級進程
    <: 高優先級進程
    s: session leader,會話(子進程)發起者
TIME:該進程累計占用cpu的時間

pgrep/pkill

進程搜索

按預定義的模式:pgrep
    pgrep[options] patter
        -u uid: effective user,生效者
        -U uid: real user,真正發起運行命令者
        -t terminal: 與指定終端相關的進程
        -l: 顯示進程名
        -a: 顯示完整格式的進程名
        -P pid: 顯示父進程為此處指定的進程的進程列表
    pgrep -t pts/0 l
    顯示pts/0終端運行的進程, l 顯示進程名稱
    pgrep -t pts/0 -a 
    顯示的更詳細,命令的參數都顯示出來。

    pgrep -P 24944 -a
    24979 passwd
    顯示24944的子進程,pid是24979 名稱 passwd

pidof
/sbin/pidof
按確切的程序名稱:

$ pidof bash
顯示系統中運行的bash進程。例如開其了多個終端,就會有多個進程。

系統工具

uptime
    顯示當前時間,系統已啟動的時間、當前上線人數,系統平均負載(1、5、15分鐘的平均負載,一般不會超過1)
    系統平均負載:
    指在特定時間間隔內運行隊列中的平均進程數。
    如果每個CPU內核的當前活動進程數不大于3的話,那么系統的性能良好。如果每個CPU內核的任務數大于5,那么這臺機器的性能有嚴重問題。
    如果linux主機是1個雙核CPU的話,當Load Average 為6的時候說明機器已經被充分使用了。

[root@localhost]# uptime -p
up 6 hours, 48 minutes

進程管理工具

top
實時跟蹤,動態先顯示內存cpu情況

top - 23:53:18 up  7:33,  3 users,  load average: 0.05, 0.06, 0.06             ##相當于uptime
Tasks: 364 total,   2 running, 362 sleeping,   0 stopped,   0 zombie        ##進程信息
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st###cpu信息
KiB Mem :  1001332 total,   113420 free,   168424 used,   719488 buff/cache        ##內存信息
KiB Swap:  2098172 total,  2098172 free,        0 used.   611316 avail Mem         ##內存信息

上面的信息可以關閉顯示。

top:有許多內置命令:
    排序:
        P:以占據的CPU百分比,%CPU
        M:占據內存百分比,%MEM
        T:累積占據CPU時長,TIME+
        首部信息顯示:
    uptime信息:l命令
    tasks及cpu信息:t命令 centos7切換顯示方式或關閉。
    cpu分別顯示:1 (數字)
    memory信息:m命令
    退出命令:q
    修改刷新時間間隔:s 默認是三秒  不建議刷新間隔太小,會給系統改造成負擔
    終止指定進程:k 
        centos7會給出個默認的pid cup使用率最高的??梢允謩又付╬id
        選擇pid 然后 Kill PID 1684 with signal [15]:默認發送15號信號。
    保存文件:W
        存到用戶的家目錄下 默認名字 .toprc

執行top后 輸入上面相應指令集可以操作。

欄位信息簡介
    us:用戶空間
    sy:內核空間
    ni:調整nice時間
    id:空閑
    wa:等待IO時間
    hi:硬中斷
    si:軟中斷(模式切換)
    st:虛擬機偷走的時間
    PID (Process Id):任務的進程IDPPID (Parent Process Pid):父任務的進程IDRUSER (Real User Name):任務的所有者真實名稱UID (User Id):任務所有者IDUSER (User Name):任務所有者名稱GROUP (Group Name):任務所有者群組名TTY (Controlling Tty):終端PR (Priority):優先級%CPU (CPU usage):CPU使用率
    %MEM (Memory usage (RES)):內存使用率
    S (Process Status):進程狀態
    TIME+ (CPU Time, hundredths):CPU時間,精確到秒

top [OPENTION]
    -d #: 指定刷新時間間隔,默認為3秒
    -b: 以批次方式 一般情況屏幕顯示不全,-b 一屏的往下翻,循環。
    -n #: 顯示多少批次 刷新次數完畢退出,默認是一直刷新,但是時間間隔可以指定-d。
    -p cpu使用率排序 (默認)

top -d 5 -n 3
    每隔5秒刷新一次,刷新3次

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

默認帶菜單,帶顏色。f1-f10快捷鍵

http://172.16.0.1/fedora-epel/7/x86_64
選項:
    -d #: 指定延遲時間;
    -u UserName: 僅顯示指定用戶的進程;
    -s COLUME: 以指定字段進行排序;

子命令:執行htop以后執行的子命令
    s: 跟蹤選定進程的系統調用;
    l: 顯示選定進程打開的文件列表;
    a:將選定的進程綁定至某指定CPU核心;
    t: 顯示進程樹

內存工具

vmstat命令:虛擬內存信息
    vmstat[options] [delay [count]]
    vmstat 2 5
        2秒刷新一次,刷新5次

默認刷新一次
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      8 126136   1596 711028    0    0    13    16   37   40  0  0 99  0  0
顯示完畢就退出

顯示內容

    procs:
        r:等待運行的進程的個數,和核心數有關
        b:處于不可中斷睡眠態的進程個數(被阻塞的隊列的長度)
    memory:
        swpd: 交換內存的使用總量
        free:空閑物理內存總量
        buffer:用于buffer的內存總量
        cache:用于cache的內存總量
    swap:
        si:從磁盤交換進內存的數據速率(kb/s)
        so:從內存交換至磁盤的數據速率(kb/s)
    io:
        bi:從塊設備讀入數據到系統的速率;(kb/s)
        bo: 保存數據至塊設備的速率;
    system:
        in: interrupts, 中斷速率,包括時鐘
        cs: context switch, 進程切換速率
    cpu:
        us:Timespent 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.
選項:
    -s: 顯示內存的統計數據

    [root@localhost ~]# vmstat -s
          1001332 K total memory
           162076 K used memory
           316484 K active memory
           236640 K inactive memory
           126664 K free memory
             1596 K buffer memory
           710996 K swap cache
          2098172 K total swap
                8 K used swap
          2098164 K free swap
             4521 non-nice user cpu ticks
              695 nice user cpu ticks
            10009 system cpu ticks
          2950649 idle cpu ticks
             3636 IO-wait cpu ticks
                0 IRQ cpu ticks
              160 softirq cpu ticks
                0 stolen cpu ticks
           371505 pages paged in
           458693 pages paged out
                0 pages swapped in
                2 pages swapped out
          1086138 interrupts
          1188701 CPU context switches
       1471940397 boot time
            47448 forks

pmap

pmap命令:進程的內存映射
report memory map of a process
pmap[options] pid[...]
    -x: 顯示詳細格式的信息;
    #pmap 1
另外一種實現:
    # cat /proc/PID/maps

    pmap PID -x
    [root@localhost ~]# pmap 47188 -x
    47188:   -bash
    Address           Kbytes     RSS   Dirty Mode  Mapping
    0000000000400000     884     648       0 r-x-- bash
    00000000006dc000       4       4       4 r---- bash
    00000000006dd000      36      36      36 rw--- bash
    00000000006e6000      24      24      24 rw---   [ anon ]
    0000000001f1b000    1456    1328    1328 rw---   [ anon ]
    00007f1d2f25f000  103580      52       0 r---- locale-archive
    00007f1d35786000      44      20       0 r-x-- libnss_files-2.17.so
    00007f1d35791000    2044       0       0 ----- libnss_files-2.17.so
    00007f1d35990000       4       4       4 r---- libnss_files-2.17.so
    00007f1d35991000       4       4       4 rw--- libnss_files-2.17.so
    00007f1d35992000      24       0       0 rw---   [ anon ]
    00007f1d35998000    1752     660       0 r-x-- libc-2.17.so
    00007f1d35b4e000    2048       0       0 ----- libc-2.17.so
    00007f1d35d4e000      16      16      16 r---- libc-2.17.so
    00007f1d35d52000       8       8       8 rw--- libc-2.17.so
    00007f1d35d54000      20      20      20 rw---   [ anon ]
    00007f1d35d59000      12       8       0 r-x-- libdl-2.17.so
    00007f1d35d5c000    2044       0       0 ----- libdl-2.17.so
    00007f1d35f5b000       4       4       4 r---- libdl-2.17.so
    00007f1d35f5c000       4       4       4 rw--- libdl-2.17.so
    00007f1d35f5d000     148     124       0 r-x-- libtinfo.so.5.9
    00007f1d35f82000    2048       0       0 ----- libtinfo.so.5.9
    00007f1d36182000      16      16      16 r---- libtinfo.so.5.9
    00007f1d36186000       4       4       4 rw--- libtinfo.so.5.9
    00007f1d36187000     132     116       0 r-x-- ld-2.17.so
    00007f1d3638f000      12      12      12 rw---   [ anon ]
    00007f1d3639e000       4       4       4 rw---   [ anon ]
    00007f1d3639f000      28      24       0 r--s- gconv-modules.cache
    00007f1d363a6000       8       8       8 rw---   [ anon ]
    00007f1d363a8000       4       4       4 r---- ld-2.17.so
    00007f1d363a9000       4       4       4 rw--- ld-2.17.so
    00007f1d363aa000       4       4       4 rw---   [ anon ]
    00007fff60224000     132      24      24 rw---   [ stack ]
    00007fff602a7000       8       4       0 r-x--   [ anon ]
    ffffffffff600000       4       0       0 r-x--   [ anon ]
    ---------------- ------- ------- ------- 
    total kB          116596    3188    1532

系統監控工具

glances

glances命令:EPEL源
交直觀的現實系統狀態,cpu 內存 進程 文件系統 網絡 等狀態
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]
內建命令:
    a Sort processes automatically l Show/hide logs
    c Sort processes by CPU% b Bytes or bits for network I/O
    m Sort processes by MEM% w Delete warning logs
    p Sort processes by name x Delete warning and critical logs
    iSort processes by I/O rate 1 Global CPU or per-CPU stats
    d Show/hide disk I/O stats h Show/hide this help screen
    f Show/hide file system stats t View network I/O as combination
    n Show/hide network stats u View cumulative network I/O
    s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)
    y Show/hide hddtempstats


常用選項:
    -b: 以Byte為單位顯示網卡數據速率
    -d: 關閉磁盤I/O模塊
    -f /path/to/somefile: 設定輸入文件位置
    -o {HTML|CSV}:輸出格式
    -m: 禁用mount模塊
    -n: 禁用網絡模塊
    -t #: 延遲時間間隔
    -1:每個CPU的相關數據單獨顯示

C/S模式下運行glances命令
服務模式:
    glances -s -B IPADDR
    IPADDR: 指明監聽的本機哪個地址
客戶端模式:
    glances -c IPADDR
    IPADDR:要連入的服務器端地址

dstat

dstat命令:系統資源統計
dstat[-afv] [options..] [delay [count]]
    -c: 顯示cpu相關信息
    -C #,#,...,total
    -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: 顯示延遲最大的進程


   PLUGINS
   While anyone can create their own dstat plugins (and contribute them) dstat ships with a number of plugins already that extend its capabilities greatly.
   Here is an overview of the plugins dstat ships with:
    電源 風扇 mysql wifi 報文 網絡 磁盤 cpu........

進程管理工具

kill

kill命令:

    向進程發送控制信號,以實現對進程管理

    顯示當前系統可用信號:kill -l
    常用信號:man 7 signal
        1) SIGHUP: 無須關閉進程而讓其重讀配置文件 
                systemctl reload SERVICENAME 等同于SIGHUP
        2) SIGINT: 中止正在運行的進程;相當于Ctrl+c
        9) SIGKILL: 殺死正在運行的進程
            不管進程處于何種操作,強行中斷并殺死。
        15) SIGTERM:終止正在運行的進程(默認選項),通常是個后臺進程。
            等待進程自己結束必要操作后,殺死進程。
        18) SIGCONT:
                    繼續 有些程序放到后臺還是會自己運行的例如cp(不是停止狀態)。
        19) SIGSTOP:
                    停止,打開vim后 ctrl + z將vim送到后臺。 該進程就處于停止狀態。


    打開vim后 ctrl + z將vim送到后臺。 該進程就處于停止狀態
    fg 將其送回前臺繼續運行。


    指定信號的方法:
        (1) 信號的數字標識;1, 2, 9
        (2) 信號完整名稱;SIGHUP
        (3) 信號的簡寫名稱;HUP

    按PID:kill [-SIGNAL] pid…

    按名稱:kill all[-SIGNAL] comm…
        killall httpd

    按模式:pkill[options] pattern
        -SIGNAL
        -u uid: effective user,生效者
        -U uid: real user,真正發起運行命令者
        -t terminal: 與指定終端相關的進程
        -l: 顯示進程名
        -a: 顯示完整格式的進程名
        -P pid: 顯示父進程為此處指定的進程的進程列表

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

(0)
yywyyw
上一篇 2016-09-09 16:18
下一篇 2016-09-09 16:22

相關推薦

  • Linux磁盤管理(分區,格式化,文件系統、VFS、mount、fstab)

    Linux系統中數據存儲在磁盤中,磁盤在馮諾依曼體系中屬于輸入輸出外部存儲對象,保存著重要的企業數據,對Linux系統中的磁盤管理尤其需要熟練掌握,由于企業目前使用的主流存儲設備還是硬盤,所以這里只敘述硬盤的組織結構; 1.分區:    (1)低級格式化:       硬盤在出廠的時候廠家會做一次分區格式化,…

    Linux干貨 2016-09-02
  • 第六周總結VIM編輯器的使用并完成練習題

    第六周 總結VIM編輯器的使用并完成練習題 1. VIM是什么? VIM(Vi IMproved)是從vi發展出來的一個文本編輯器。 2.為什么要使用VIM? VIM有代碼補完,編譯以及錯誤跳轉等方便編程的功能,在程序員中廣泛使用。對于大多數的用戶來說,VIM有著比較陡峭的學習曲線,但是一旦掌握一些基本操作之后,能大幅度提高編輯效率。VIM是類Unix系統用…

    Linux干貨 2017-09-02
  • 硬鏈接與軟鏈接的區別

    硬鏈接與軟連接                本文僅用于個人學習參考:         簡單介紹了硬鏈接與軟連接的區別。  &nb…

    Linux干貨 2016-10-20
  • Net25-第9周作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash for line in `cat /etc/passwd`;do if [[ `echo $line | awk -F: ‘{print $7}’` == ‘/sb…

    Linux干貨 2017-03-15
  • 堡壘機-麒麟開源堡壘機蘋果 Mac支持版本發布

      近日,麒麟開源堡壘機團隊開發測試了支持Mac OS蘋果操作系統的Web插件,蘋果系統用戶可以直接和Windows用戶一樣,登錄到Web平臺,使用點擊的方式調動運維工具并且登錄到目標系統進行操作運維。 Mac OS插件支持ssh、telnet、rdp、vnc、x11、sftp、ftp、應用發布等所有協議。   注:麒…

    Linux干貨 2016-05-19
  • linux 哲學思想

    一切皆文件:普通文件,目錄、字符設備、塊設備、套接字在linux中都是以文件被對待;雖然類型不通,但是對其提供得卻都是統一套操作界面。 由眾多的單一程序,一個程序只實現一個功能,多個程序組合完成負責任務。單一的程序可以保持高效的執行效率,對于復雜的功能linux通過許多簡單程序組合等方式實現,在保證簡單程序的高效性同時,復雜的程序也必然是高效性的。 文本文件…

    Linux干貨 2017-08-19
欧美性久久久久