1. 程式人生 > >Centos常用的程序管理和資源檢視工具

Centos常用的程序管理和資源檢視工具

一、pstree

pstree命令以樹狀圖的方式展現程序之間的派生關係

-a:顯示每個程式的完整指令,包含路徑,引數或是常駐服務的標示; 
-c:不使用精簡標示法; 
-G:使用VT100終端機的列繪圖字元; 
-h:列出樹狀圖時,特別標明現在執行的程式; 
-H<程式識別碼>:此引數的效果和指定"-h"引數類似,但特別標明指定的程式; 
-l:採用長列格式顯示樹狀圖; 
-n:用程式識別碼排序。預設是以程式名稱來排序; 
-p:顯示程式識別碼; 
-u:顯示使用者名稱稱; 
-U:使用UTF-8列繪圖字元; 
-V:顯示版本資訊;

例如我要檢視系統中所有的httpd程序和執行緒

[[email protected] ~]# pstree -p | grep httpd
           |-httpd(2821)-+-httpd(2822)-+-{httpd}(2827)
           |             |             |-{httpd}(2828)
           |             |             |-{httpd}(2829)
           |             |             |-{httpd}(2836)
           |             |             |-{httpd}(2837)
           |             |             |-{httpd}(2838)
           |             |             |-{httpd}(2886)
           |             |             |-{httpd}(2887)
           |             |             |-{httpd}(2888)
           |             |             |-{httpd}(2889)
           |             |             |-{httpd}(2890)
           |             |             |-{httpd}(2891)
           |             |             |-{httpd}(2892)
           |             |             |-{httpd}(2893)
           |             |             |-{httpd}(2894)
           |             |             |-{httpd}(2895)
           |             |             |-{httpd}(2896)
           |             |             |-{httpd}(2897)
           |             |             |-{httpd}(2898)
           |             |             |-{httpd}(2899)
           |             |             |-{httpd}(2900)
           |             |             |-{httpd}(2901)
           |             |             |-{httpd}(2902)
           |             |             |-{httpd}(2903)
           |             |             |-{httpd}(2904)
           |             |             `-{httpd}(2905)
           |             |-httpd(2823)-+-{httpd}(2830)
           |             |             |-{httpd}(2831)
           |             |             |-{httpd}(2832)
           |             |             |-{httpd}(2833)
           |             |             |-{httpd}(2834)
           |             |             |-{httpd}(2835)
           |             |             |-{httpd}(2846)
           |             |             |-{httpd}(2847)
           |             |             |-{httpd}(2848)
           |             |             |-{httpd}(2849)
           |             |             |-{httpd}(2850)
           |             |             |-{httpd}(2851)
           |             |             |-{httpd}(2852)
           |             |             |-{httpd}(2853)
           |             |             |-{httpd}(2854)
           |             |             |-{httpd}(2855)
           |             |             |-{httpd}(2856)
           |             |             |-{httpd}(2857)
           |             |             |-{httpd}(2858)
           |             |             |-{httpd}(2859)
           |             |             |-{httpd}(2860)
           |             |             |-{httpd}(2861)
           |             |             |-{httpd}(2862)
           |             |             |-{httpd}(2863)
           |             |             |-{httpd}(2864)
           |             |             `-{httpd}(2865)
           |             `-httpd(2824)-+-{httpd}(2840)
           |                           |-{httpd}(2841)
           |                           |-{httpd}(2842)
           |                           |-{httpd}(2843)
           |                           |-{httpd}(2844)
           |                           |-{httpd}(2845)
           |                           |-{httpd}(2866)
           |                           |-{httpd}(2867)
           |                           |-{httpd}(2868)
           |                           |-{httpd}(2869)
           |                           |-{httpd}(2870)
           |                           |-{httpd}(2871)
           |                           |-{httpd}(2872)
           |                           |-{httpd}(2873)
           |                           |-{httpd}(2874)
           |                           |-{httpd}(2875)
           |                           |-{httpd}(2876)
           |                           |-{httpd}(2877)
           |                           |-{httpd}(2878)
           |                           |-{httpd}(2879)
           |                           |-{httpd}(2880)
           |                           |-{httpd}(2881)
           |                           |-{httpd}(2882)
           |                           |-{httpd}(2883)
           |                           |-{httpd}(2884)
           |                           `-{httpd}(2885)

因為pstree以樹狀圖顯示,所以非常直觀,加上程序的PID還能顯示這個PID對應的程序的詳細情況

[[email protected] ~]# pstree 2821
httpd───3*[httpd───26*[{httpd}]]
這裡表示httpd下有3個子程序26個執行緒

二、vmstat

vmstat可以展現給定時間間隔的伺服器的狀態值,包括伺服器的CPU使用率,記憶體使用,虛擬記憶體交換情況,IO讀寫情況等

-a:顯示活躍和非活躍記憶體
-f:顯示從系統啟動至今的fork數量
-m:顯示slabinfo
-n:只在開始時顯示一次各欄位名稱
-s:顯示記憶體相關統計資訊及多種系統活動數量
delay:重新整理時間間隔。如果不指定,只顯示一條結果
count:重新整理次數。如果不指定重新整理次數,但指定了重新整理時間間隔,這時重新整理次數為無窮
-d:顯示磁碟相關統計資訊
-p:顯示指定磁碟分割槽統計資訊
-S:使用指定單位顯示。引數有 k 、K 、m 、M ,分別代表1000、1024、1000000、1048576位元組(byte)
-V:顯示vmstat版本資訊

直接使用則只顯示一次系統現在的情況,例如

[[email protected] ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 575980    952 306180    0    0     1     0   16   27  0  0 100  0  0
procs:
    r:等待執行的程序的個數;
    b:處於不可中斷睡眠態的程序個數;(被阻塞的佇列的長度);
memory:
    swpd: 交換記憶體的使用總量; 
    free:空閒實體記憶體總量;
    buffer:用於buffer的記憶體總量;
    cache:用於cache的記憶體總量;
swap:
    si:資料進入swap中的資料速率(kb/s)
    so:資料離開swap中的資料速率(kb/s)
io:
    bi:從塊裝置讀入資料到系統的速率;(kb/s)
    bo: 儲存資料至塊裝置的速率;
system:
    in: 中斷速率;
    cs: 程序切換速率
cpu:
    us:使用者使用CPU百分比
    sy:系統使用CPU百分比
    id:空閒CPU使用率
    wa:IO等待時間百分比
    我們可以自動反覆採集系統現在的使用情況
[[email protected] ~]# vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 576256    952 306160    0    0     1     0   16   27  0  0 100  0  0
 0  0      0 576280    952 306168    0    0     0     0  104  176  0  0 100  0  0
 0  0      0 576248    952 306168    0    0     0     0   85  137  0  0 100  0  0
 0  0      0 576280    952 306168    0    0     0     0   85  136  0  0 100  0  0
 0  0      0 576280    952 306168    0    0     0     0   88  151  0  0 100  0  0
 0  0      0 576280    952 306168    0    0     0     0   73  126  0  0 100  0  0
 0  0      0 576280    952 306168    0    0     0     0   65  113  0  0 100  0  0
 0  0      0 576280    952 306168    0    0     0     0   69  120  0  0 100  0  0
 0  0      0 576248    952 306168    0    0     0     0   79  135  0  0 100  0  0
 0  0      0 576248    952 306168    0    0     0     0   72  124  0  0 100  0  0
 1表示一秒採集一次系統狀態
 10表示一共採集十次

三、pmap

pmap命令用於顯示一個或多個程序的記憶體狀態

-x extended顯示擴充套件格式
-d device顯示裝置格式
-q quiet不顯示header/footer行
-V 顯示版本資訊

後面必須接程序PID,例如

[[email protected] ~]# pmap -x 1250
1250:   /usr/sbin/sshd -D
Address           Kbytes     RSS   Dirty Mode  Mapping
00007f7541c98000      44      20       0 r-x-- libnss_files-2.17.so
00007f7541ca3000    2044       0       0 ----- libnss_files-2.17.so
00007f7541ea2000       4       4       4 r---- libnss_files-2.17.so
00007f7541ea3000       4       4       4 rw--- libnss_files-2.17.so
00007f7541ea4000      24       0       0 rw---   [ anon ]
00007f7541eaa000      28      12       0 r-x-- librt-2.17.so
00007f7541eb1000    2044       0       0 ----- librt-2.17.so
00007f75420b0000       4       4       4 r---- librt-2.17.so
00007f75420b1000       4       4       4 rw--- librt-2.17.so
00007f75420b2000      12       8       0 r-x-- libkeyutils.so.1.5
00007f75420b5000    2044       0       0 ----- libkeyutils.so.1.5
00007f75422b4000       4       4       4 r---- libkeyutils.so.1.5
00007f75422b5000       4       4       4 rw--- libkeyutils.so.1.5
00007f75422b6000      52      16       0 r-x-- libkrb5support.so.0.1
00007f75422c3000    2048       0       0 ----- libkrb5support.so.0.1
00007f75424c3000       4       4       4 r---- libkrb5support.so.0.1
@@@@@@@@@@@@@@@@@@@@@@@@@@@中間太多省略@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
00007f7546be9000       4       4       4 rw--- libfipscheck.so.1.2.1
00007f7546bea000     132     116       0 r-x-- ld-2.17.so
00007f7546df2000      72      72      72 rw---   [ anon ]
00007f7546e0a000       4       4       4 rw---   [ anon ]
00007f7546e0b000       4       4       4 r---- ld-2.17.so
00007f7546e0c000       4       4       4 rw--- ld-2.17.so
00007f7546e0d000       4       4       4 rw---   [ anon ]
00007f7546e0e000     764     264       0 r-x-- sshd
00007f75470cc000      16      16      16 r---- sshd
00007f75470d0000       4       4       4 rw--- sshd
00007f75470d1000      40      40      40 rw---   [ anon ]
00007f75489a6000     132      72      72 rw---   [ anon ]
00007ffd7441e000     132      20      20 rw---   [ stack ]
00007ffd74547000       8       4       0 r-x--   [ anon ]
ffffffffff600000       4       0       0 r-x--   [ anon ]
---------------- ------- ------- ------- 
total kB           82544    3604     852

每個欄位的意義

Address: 記憶體開始地址
Kbytes: 佔用記憶體的位元組數(KB)
RSS: 保留記憶體的位元組數(KB)
Dirty: 髒頁的位元組數(包括共享和私有的)(KB)
Mode: 記憶體的許可權:read、write、execute、shared、private (寫時複製)
Mapping: 佔用記憶體的檔案、或[anon](分配的記憶體)、或[stack](堆疊)
Offset: 檔案偏移
Device: 裝置名 (major:minor)

四、glances

非常優秀的一款系統資源檢視工具,可以檢視 CPU、負載、記憶體、磁碟 I/O、網路流量、檔案系統、系統溫度等資訊

常用選項

-b: 以Byte為單位顯示網絡卡資料速率;
-d: 關閉磁碟I/O模組;
-f /path/to/somefile: 設定輸入檔案位置;
-o {HTML|CSV}:輸出格式;
-m: 禁用mount模組
-n: 禁用網路模組
-t SECONDS: 延遲時間間隔
-1:每個CPU的相關資料單獨顯示;

[[email protected] ~]# glances
localhost.localdomain (CentOS Linux 7.2.1511 64bit / Linux 3.10.0-327.el7.x86_64                                             Uptime: 1 day, 0:10:38

CPU       0.6%  steal:    0.0%   Load   4核	 Mem    19.2%  active:    230M   Swap    0.0%
user:     0.3%  nice:     0.0%   1 min:   0.04   total:  993M  inactive:  103M   total: 2.00G
system:   0.2%  iowait:   0.0%   5 min:   0.03   used:   190M  buffers:   952K   used:      0
idle:    99.4%  irq:	  0.0%   15 min:  0.05   free:   803M  cached:    257M   free:  2.00G

網路       Rx/s    Tx/s   Tasks  119 (212 thr),  1 run, 118 slp,  0 oth  自動排序
_1677772    8Kb     3Kb
lo           0b      0b    VIRT   RES  CPU%  MEM%   PID USER        NI S    TIME+ IOR/s IOW/s NAME
                           232M   15M   2.6   1.5  5878 root         0 R  0:01.17     0     0 /usr/bin/python /usr/bin/glances
Disk I/O   In/s   Out/s       0     0   1.0   0.0    13 root         0 S  2:06.50     0     0 rcu_sched
dm-0          0       0       0     0   0.3   0.0    14 root         0 S  1:18.83     0     0 rcuos/0
dm-1          0       0       0     0   0.3   0.0    16 root         0 S  0:05.46     0     0 rcuos/2
fd0           0       0    120M    4M   0.0   0.4     1 root         0 S  0:04.71     0     0 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
sda1          0       0       0     0   0.0   0.0     2 root         0 S  0:00.60     0     0 kthreadd
sda2          0       0       0     0   0.0   0.0     3 root         0 S  0:00.46     0     0 ksoftirqd/0
sdb           0       0       0     0   0.0   0.0     5 root	   -20 S  0:00.00     0     0 kworker/0:0H
sdc           0       0       0     0   0.0   0.0     7 root         0 S  0:01.60     0     0 migration/0
sr0           0       0       0     0   0.0   0.0     8 root         0 S  0:00.00     0     0 rcu_bh
                              0     0   0.0   0.0     9 root         0 S  0:00.00     0     0 rcuob/0
Mount      Used   Total       0     0   0.0   0.0    10 root         0 S  0:00.00     0     0 rcuob/1
/         1.86G   17.5G       0     0   0.0   0.0    11 root         0 S  0:00.00     0     0 rcuob/2
/boot      124M    497M       0     0   0.0   0.0    12 root         0 S  0:00.00     0     0 rcuob/3
/run      6.73M    496M       0     0   0.0   0.0    15 root         0 S  0:06.15     0     0 rcuos/1
_/user/0      0   99.3M       0     0   0.0   0.0    17 root         0 S  0:05.51     0     0 rcuos/3
                              0     0   0.0   0.0    18 root         0 S  0:00.47     0     0 watchdog/0
                              0     0   0.0   0.0    19 root         0 S  0:00.56     0     0 watchdog/1
                              0     0   0.0   0.0    20 root         0 S  0:01.53     0     0 migration/1
                              0     0   0.0   0.0    21 root         0 S  0:00.48     0     0 ksoftirqd/1

狀態列的意義:

VIRT: 虛擬記憶體大小
RES: 程序佔用的實體記憶體值
%CPU:該程序佔用的 CPU 使用率
%MEM:該程序佔用的實體記憶體和總記憶體的百分比
PID: 程序 ID 號
USER: 程序所有者的使用者名稱
TIME+: 該程序啟動後佔用的總的 CPU 時間
IO_R 和 IO_W: 程序的讀寫 I/O 速率
NAME: 程序名稱
NI: 程序優先順序
S: 程序狀態,其中 S 表示休眠,R 表示正在執行,Z 表示僵死狀態。

功能鍵用法:

h : 顯示幫助資訊
q : 離開程式退出
c :按照 CPU 實時負載對系統程序進行排序
m :按照記憶體使用狀況對系統程序排序
i:按照 I/O 使用狀況對系統程序排序
p: 按照程序名稱排序
d : 顯示磁碟讀寫狀況
w : 刪除日誌檔案
l :顯示日誌
s: 顯示感測器資訊
f : 顯示系統資訊
1 :輪流顯示每個 CPU 核心的使用情況(次選項僅僅使用在多核 CPU 系統)

五、ps

ps命令是最基本同時也是非常強大的程序檢視命令,使用該命令可以確定有哪些程序正在執行和執行的狀態、程序是否結束、程序有沒有僵死、哪些程序佔用了過多的資源等等

常用選項

a:顯示所有程序
-a:顯示同一終端下的所有程式
-A:顯示所有程序
c:顯示程序的真實名稱
-N:反向選擇
-e:等於“-A”
e:顯示環境變數
f:顯示程式間的關係
-H:顯示樹狀結構
r:顯示當前終端的程序
T:顯示當前終端的所有程式
u:指定使用者的所有程序
-l: 顯示程序名
-C<命令>:列出指定命令的狀況
--lines<行數>:每頁顯示的行數
--width<字元數>:每頁顯示的字元數
--help:顯示幫助資訊
--version:顯示版本顯示

常用的組合:

[[email protected] ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3 123136  3716 ?        Ss   3月19   0:04 /usr/lib/systemd/systemd --switched-r
root         2  0.0  0.0      0     0 ?        S    3月19   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    3月19   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S<   3月19   0:00 [kworker/0:0H]
root         7  0.0  0.0      0     0 ?        S    3月19   0:01 [migration/0]
u: 以使用者為中心組織程序狀態資訊顯示
a: 與終端相關的程序;
x: 與終端無關的程序;

[[email protected] ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 3月19 ?       00:00:04 /usr/lib/systemd/systemd --switched-root --system --des
root         2     0  0 3月19 ?       00:00:00 [kthreadd]
root         3     2  0 3月19 ?       00:00:00 [ksoftirqd/0]
root         5     2  0 3月19 ?       00:00:00 [kworker/0:0H]
root         7     2  0 3月19 ?       00:00:01 [migration/0]
-e: 顯示所有程序
-f: 顯示完整格式程式資訊

[[email protected] ~]# ps -eFH
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root         2     0  0     0     0   0 3月19 ?       00:00:00 [kthreadd]
root         3     2  0     0     0   0 3月19 ?       00:00:00   [ksoftirqd/0]
root         5     2  0     0     0   0 3月19 ?       00:00:00   [kworker/0:0H]
root         7     2  0     0     0   0 3月19 ?       00:00:01   [migration/0]
root         8     2  0     0     0   0 3月19 ?       00:00:00   [rcu_bh]
root         9     2  0     0     0   0 3月19 ?       00:00:00   [rcuob/0]
root        10     2  0     0     0   0 3月19 ?       00:00:00   [rcuob/1]
-F: 顯示完整格式的程序資訊
-H: 以程序層級格式顯示程序相關資訊

可以和grep結合查詢指定程序

[[email protected] ~]# ps aux | grep httpd
root      2821  0.0  0.2  70792  2176 ?        Ss   3月19   0:03 /usr/local/apache2.4/bin/httpd
daemon    2822  0.0  0.4 359756  4240 ?        Sl   3月19   0:31 /usr/local/apache2.4/bin/httpd
daemon    2823  0.0  0.4 490828  4756 ?        Sl   3月19   0:31 /usr/local/apache2.4/bin/httpd
daemon    2824  0.0  0.4 359756  4260 ?        Sl   3月19   0:31 /usr/local/apache2.4/bin/httpd

六、top

top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況 top是互動式工具,可使用互動式命令,排序什麼的非常方便

top - 10:42:33 up 1 day,  1:11,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 120 total,   3 running, 117 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 28.8/1016816  [||||||||||||||||||||||                                                      ]
KiB Swap:  0.0/2097148  [                                                                            ]

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                           
 5962 root      20   0  146152   1988   1396 R   0.3  0.2   0:00.33 top                               
    1 root      20   0  123136   3716   2388 S   0.0  0.4   0:04.94 systemd                           
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.06 kthreadd                          
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.47 ksoftirqd/0                       
    5