Centos常用的程序管理和資源檢視工具
阿新 • • 發佈:2018-11-05
一、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