centos查看cpu信息命令,linux 查看系統性能總結

 2023-10-18 阅读 68 评论 0

摘要:目錄 各指標查看總結 CPU 性能工具 內存性能工具 ?磁盤 I/O 性能工具 網絡性能工具 基準測試工具 CPU相關命令 ps top vmstat pidstat sar kill 內存相關命令 free pmap IO相關命令 df 網絡相關命令 netstat 各指標查看總結 CPU 性能工具 首先,從 CPU 的角度來說࿰

目錄

各指標查看總結

CPU 性能工具

內存性能工具

?磁盤 I/O 性能工具

網絡性能工具

基準測試工具

CPU相關命令

ps

top

vmstat

pidstat

sar

kill

內存相關命令

free

pmap

IO相關命令

df

網絡相關命令

netstat


各指標查看總結

CPU 性能工具

首先,從 CPU 的角度來說,主要的性能指標就是 CPU 的使用率、上下文切換以及 CPU Cache 的命中率等。下面這張圖就列出了常見的 CPU 性能指標。

從這些指標出發,再把 CPU 使用率,劃分為系統和進程兩個維度,我們就可以得到,下面這個
CPU 性能工具速查表。注意,因為每種性能指標都可能對應多種工具,我在每個指標的說明中,
都幫你總結了這些工具的特點和注意事項。?

內存性能工具

接著我們來看內存方面。從內存的角度來說,主要的性能指標,就是系統內存的分配和使用、進
程內存的分配和使用以及 SWAP 的用量。下面這張圖列出了常見的內存性能指標。

磁盤 I/O 性能工具

接下來,從文件系統和磁盤 I/O 的角度來說,主要性能指標,就是文件系統的使用、緩存和緩沖
區的使用,以及磁盤 I/O 的使用率、吞吐量和延遲等。下面這張圖列出了常見的 I/O 性能指標。

?

網絡性能工具

從網絡的角度來說,主要性能指標就是吞吐量、響應時間、連接數、丟包數等。根據 TCP/IP 網絡協議棧的原理,我們可以把這些性能指標,進一步細化為每層協議的具體指標。這里同樣用一張圖,分別從鏈路層、網絡層、傳輸層和應用層,列出了各層的主要指標。

?

?

基準測試工具

除了性能分析外,很多時候,我們還需要對系統性能進行基準測試。比如:

在文件系統和磁盤 I/O 模塊中,我們使用 fio 工具,測試了磁盤 I/O 的性能。
在網絡模塊中,我們使用 iperf、pktgen 等,測試了網絡的性能。
而在很多基于 Nginx 的案例中,我們則使用 ab、wrk 等,測試 Nginx 應用的性能。
除了這些工具外,對于 Linux 的各個子系統來說,還有很多其他的基準測試工具可能會用到。下面這張圖,是 Brendan Gregg 整理的 Linux 基準測試工具圖譜,可以保存下來,在需要時參考。

?

CPU相關命令

ps

Linux ps (英文全拼:process status)命令用于顯示當前進程的狀態,類似于 windows 的任務管理器。

語法

ps [options] [--help]

參數:

ps 的參數非常多, 在此僅列出幾個常用的參數并大略介紹含義
-A 列出所有的進程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程
au(x) 輸出格式 :

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程擁有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的記憶體使用率
VSZ: 占用的虛擬記憶體大小
RSS: 占用的記憶體大小
TTY: 終端的次要裝置號碼 (minor device number of tty)
STAT: 該行程的狀態:D: 無法中斷的休眠狀態 (通常 IO 的進程)
R: 正在執行中
S: 靜止狀態
T: 暫停執行
Z: 不存在但暫時無法消除
W: 沒有足夠的記憶體分頁可分配
<: 高優先序的行程
N: 低優先序的行程
L: 有記憶體分頁分配并鎖在記憶體內 (實時系統或捱A I/O)
START: 行程開始時間
TIME: 執行的時間
COMMAND:所執行的指令

查找指定進程格式:ps -ef | grep 進程關鍵字
例如顯示 php 的進程:# ps -ef | grep php
root ? ? ? 794 ? ? 1 ?0 ?2020 ? ? ? ? ?00:00:52 php-fpm: master process (/etc/php/7.3/fpm/php-fpm.conf)
www-data ? 951 ? 794 ?0 ?2020 ? ? ? ? ?00:24:15 php-fpm: pool www
www-data ? 953 ? 794 ?0 ?2020 ? ? ? ? ?00:24:14 php-fpm: pool www
www-data ? 954 ? 794 ?0 ?2020 ? ? ? ? ?00:24:29 php-fpm: pool www
...
顯示進程信息:# ps -A?
PID TTY ? ? TIME CMD1 ? ? ?00:00:02 init2 ? ? ?00:00:00 kthreadd3 ? ? ?00:00:00 migration/04 ? ? ?00:00:00 ksoftirqd/05 ? ? ?00:00:00 watchdog/06 ? ? ?00:00:00 events/07 ? ? ?00:00:00 cpuset8 ? ? ?00:00:00 khelper9 ? ? ?00:00:00 netns10 ? ? ?00:00:00 async/mgr11 ? ? ?00:00:00 pm12 ? ? ?00:00:00 sync_supers13 ? ? ?00:00:00 bdi-default14 ? ? ?00:00:00 kintegrityd/015 ? ? ?00:00:02 kblockd/016 ? ? ?00:00:00 kacpid17 ? ? ?00:00:00 kacpi_notify18 ? ? ?00:00:00 kacpi_hotplug19 ? ? ?00:00:27 ata/0
……省略部分結果
30749 pts/0 ?00:00:15 gedit
30886 ? ? ?00:01:10 qtcreator.bin
30894 ? ? ?00:00:00 qtcreator.bin?
31160 ? ? ?00:00:00 dhclient
31211 ? ? ?00:00:00 aptd
31302 ? ? ?00:00:00 sshd
31374 pts/2 ?00:00:00 bash
31396 pts/2 ?00:00:00 ps
顯示指定用戶信息# ps -u root //顯示root進程用戶信息PID TTY ? ? TIME CMD1 ? ? ?00:00:02 init2 ? ? ?00:00:00 kthreadd3 ? ? ?00:00:00 migration/04 ? ? ?00:00:00 ksoftirqd/05 ? ? ?00:00:00 watchdog/06 ? ? ?00:00:00 events/07 ? ? ?00:00:00 cpuset8 ? ? ?00:00:00 khelper9 ? ? ?00:00:00 netns10 ? ? ?00:00:00 async/mgr11 ? ? ?00:00:00 pm12 ? ? ?00:00:00 sync_supers13 ? ? ?00:00:00 bdi-default14 ? ? ?00:00:00 kintegrityd/015 ? ? ?00:00:02 kblockd/016 ? ? ?00:00:00 kacpid
……省略部分結果
30487 ? ? ?00:00:06 gnome-terminal
30488 ? ? ?00:00:00 gnome-pty-helpe
30489 pts/0 ?00:00:00 bash
30670 ? ? ?00:00:00 debconf-communi?
30749 pts/0 ?00:00:15 gedit
30886 ? ? ?00:01:10 qtcreator.bin
30894 ? ? ?00:00:00 qtcreator.bin?
31160 ? ? ?00:00:00 dhclient
31211 ? ? ?00:00:00 aptd
31302 ? ? ?00:00:00 sshd
31374 pts/2 ?00:00:00 bash
31397 pts/2 ?00:00:00 ps
顯示所有進程信息,連同命令行# ps -ef //顯示所有命令,連帶命令行
UID ? ?PID PPID C STIME TTY ? ? TIME CMD
root ? ? 1 ? 0 0 10:22 ? ? ?00:00:02 /sbin/init
root ? ? 2 ? 0 0 10:22 ? ? ?00:00:00 [kthreadd]
root ? ? 3 ? 2 0 10:22 ? ? ?00:00:00 [migration/0]
root ? ? 4 ? 2 0 10:22 ? ? ?00:00:00 [ksoftirqd/0]
root ? ? 5 ? 2 0 10:22 ? ? ?00:00:00 [watchdog/0]
root ? ? 6 ? 2 0 10:22 ? ? ?/usr/lib/NetworkManager
……省略部分結果
root ? 31302 2095 0 17:42 ? ? ?00:00:00 sshd: root@pts/2?
root ? 31374 31302 0 17:42 pts/2 ?00:00:00 -bash
root ? 31400 ? 1 0 17:46 ? ? ?00:00:00 /usr/bin/python /usr/sbin/aptd
root ? 31407 31374 0 17:48 pts/2 ?00:00:00 ps -ef

top

Linux top命令用于實時顯示 process 的動態。

使用權限:所有使用者。

語法

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

參數說明:

d : 改變顯示的更新速度,或是在交談式指令列( interactive command)按 s
q : 沒有任何延遲的顯示速度,如果使用者是有 superuser 的權限,則 top 將會以最高的優先序執行
c : 切換顯示模式,共有兩種模式,一是只顯示執行檔的名稱,另一種是顯示完整的路徑與名稱
S : 累積模式,會將己完成或消失的子進程 ( dead child process ) 的 CPU time 累積起來
s : 安全模式,將交談式指令取消, 避免潛在的危機
i : 不顯示任何閑置 (idle) 或無用 (zombie) 的進程
n : 更新的次數,完成后將會退出 top
b : 批次檔模式,搭配 "n" 參數一起使用,可以用來將 top 的結果輸出到檔案內

第一行,任務隊列信息,同 uptime 命令的執行結果

系統時間:07:27:05

運行時間:up 1:57 min,

當前登錄用戶: ?3 user

負載均衡(uptime) ?load average: 0.00, 0.00, 0.00

average后面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。

load average數據是每隔5秒鐘檢查一次活躍的進程數,然后按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高于5的時候就表明系統在超負荷運轉了

第二行,Tasks — 任務(進程)

總進程:150 total, 運行:1 running, 休眠:149 sleeping, 停止: 0 stopped, 僵尸進程: 0 zombie

第三行,cpu狀態信息

0.0%us【user space】— 用戶空間占用CPU的百分比。

0.3%sy【sysctl】— 內核空間占用CPU的百分比。

0.0%ni【】— 改變過優先級的進程占用CPU的百分比

99.7%id【idolt】— 空閑CPU百分比

0.0%wa【wait】— IO等待占用CPU的百分比

0.0%hi【Hardware IRQ】— 硬中斷占用CPU的百分比

0.0%si【Software Interrupts】— 軟中斷占用CPU的百分比

第四行,內存狀態

1003020k total, ? 234464k used, ? 777824k free, ? ?24084k buffers【緩存的內存量】

第五行,swap交換分區信息

2031612k total, ? ? ?536k used, ?2031076k free, ? 505864k cached【緩沖的交換區總量】

備注:

可用內存=free + buffer + cached

對于內存監控,在top里我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。

第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,

第四行中空閑內存總量(free)是內核還未納入其管控范圍的數量。

納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重復利用的內存,內核并不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用為此擔心。

第六行,空行

第七行以下:各進程(任務)的狀態監控

PID — 進程id
USER — 進程所有者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S —進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
%CPU — 上次更新到現在的CPU時間占用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)

詳解

VIRT:virtual memory usage 虛擬內存
1、進程“需要的”虛擬內存大小,包括進程使用的庫、代碼、數據等
2、假如進程申請100m的內存,但實際只使用了10m,那么它會增長100m,而不是實際的使用量

RES:resident memory usage 常駐內存
1、進程當前使用的內存大小,但不包括swap out
2、包含其他進程的共享
3、如果申請100m的內存,實際使用10m,它只增長10m,與VIRT相反
4、關于庫占用內存的情況,它只統計加載的庫文件所占內存大小

SHR:shared memory 共享內存
1、除了自身進程的共享內存,也包括其他進程的共享內存
2、雖然進程只使用了幾個共享庫的函數,但它包含了整個共享庫的大小
3、計算某個進程所占的物理內存大小公式:RES – SHR
4、swap out后,它將會降下來

DATA
1、數據占用的內存。如果top沒有顯示,按f鍵可以顯示出來。
2、真正的該程序要求的數據空間,是真正在運行中要使用的。

top 運行中可以通過 top 的內部命令對進程的顯示方式進行控制。

內部命令如下:

s – 改變畫面更新頻率

l – 關閉或開啟第一部分第一行 top 信息的表示

t – 關閉或開啟第一部分第二行 Tasks 和第三行 Cpus 信息的表示

m – 關閉或開啟第一部分第四行 Mem 和 第五行 Swap 信息的表示

N – 以 PID 的大小的順序排列表示進程列表

P – 以 CPU 占用率大小的順序排列進程列表

M – 以內存占用率大小的順序排列進程列表

h – 顯示幫助

n – 設置在進程列表所顯示進程的數量

q – 退出 top

Ctrl+L:擦除并且重寫屏幕

K:終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什么樣的信號。一般的終止進程可以使用15信號;如果不能正常結束那就使用信號9強制結束該進程。默認值是信號15。在安全模式中此命令被屏蔽。

i:忽略閑置和僵死進程。這是一個開關式命令。

r:重新安排一個進程的優先級別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先級值。輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先權。默認值是10。

S:切換到累計模式。

s:改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位為s。如果有小數,就換算成m s。輸入0值則系統將不斷刷新,默認值是5 s。需要注意的是如果設置太小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。

f或者F:從當前顯示中添加或者刪除項目。

o或者O:改變顯示項目的順序

c:切換顯示命令名稱和完整命令行。

T:根據時間/累計時間進行排序。

W:將當前設置寫入~/.toprc文件中。

顯示進程信息# top顯示完整命令# top -c以批處理模式顯示程序信息# top -b以累積模式顯示程序信息# top -S設置信息更新次數top -n 2//表示更新兩次后終止更新顯示
設置信息更新時間# top -d 3//表示更新周期為3秒
顯示指定的進程信息# top -p 139//顯示進程號為139的進程信息,CPU、內存占用率等
顯示更新十次后退出top -n 10使用者將不能利用交談式指令來對行程下命令top -s

vmstat

Linux vmstat命令的含義為顯示虛擬內存狀態(“Virtual Memory Statistics”),但是它可以報告關于進程、內存、I/O等系統整體運行狀態。

語法

vmstat (選項) ?(參數)

選項

-a:顯示活動內頁;
-f:顯示啟動后創建的進程總數;
-m:顯示slab信息;
-n:頭信息僅顯示一次;
-s:以表格方式顯示事件計數器和內存狀態;
-d:報告磁盤狀態;
-p:顯示指定的硬盤分區狀態;
-S:輸出信息的單位。

參數

事件間隔:狀態信息刷新的時間間隔;
次數:顯示報告的次數。

實例

vmstat 3
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
?r ?b ? swpd ? free ? buff ?cache ? si ? so ? ?bi ? ?bo ? in ? cs us sy id wa st
?0 ?0 ? ?320 ?42188 167332 1534368 ? ?0 ? ?0 ? ? 4 ? ? 7 ? ?1 ? ?0 ?0 ?0 99 ?0 ?0
?0 ?0 ? ?320 ?42188 167332 1534392 ? ?0 ? ?0 ? ? 0 ? ? 0 1002 ? 39 ?0 ?0 100 ?0 ?0
?0 ?0 ? ?320 ?42188 167336 1534392 ? ?0 ? ?0 ? ? 0 ? ?19 1002 ? 44 ?0 ?0 100 ?0 ?0
?0 ?0 ? ?320 ?42188 167336 1534392 ? ?0 ? ?0 ? ? 0 ? ? 0 1002 ? 41 ?0 ?0 100 ?0 ?0
?0 ?0 ? ?320 ?42188 167336 1534392 ? ?0 ? ?0 ? ? 0 ? ? 0 1002 ? 41 ?0 ?0 100 ?0 ?0

字段說明:

Procs(進程)

r: 運行隊列中進程數量,這個值也可以判斷是否需要增加CPU。(長期大于1)
b: 等待IO的進程數量。

Memory(內存)

swpd: 使用虛擬內存大小,如果swpd的值不為0,但是SI,SO的值長期為0,這種情況不會影響系統性能。
free: 空閑物理內存大小。
buff: 用作緩沖的內存大小。
cache: 用作緩存的內存大小,如果cache的值大的時候,說明cache處的文件數多,如果頻繁訪問到的文件都能被cache處,那么磁盤的讀IO bi會非常小。

Swap

si: 每秒從交換區寫到內存的大小,由磁盤調入內存。
so: 每秒寫入交換區的內存大小,由內存調入磁盤。
注意:內存夠用的時候,這2個值都是0,如果這2個值長期大于0時,系統性能會受到影響,磁盤IO和CPU資源都會被消耗。有些朋友看到空閑內存(free)很少的或接近于0時,就認為內存不夠用了,不能光看這一點,還要結合si和so,如果free很少,但是si和so也很少(大多時候是0),那么不用擔心,系統性能這時不會受到影響的。

IO(現在的Linux版本塊的大小為1kb)

bi: 每秒讀取的塊數
bo: 每秒寫入的塊數
注意:隨機磁盤讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。

system(系統)

in: 每秒中斷數,包括時鐘中斷。
cs: 每秒上下文切換數。
注意:上面2個值越大,會看到由內核消耗的CPU時間會越大。

CPU(以百分比表示)

us: 用戶進程執行時間百分比(user time)
us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那么我們就該考慮優化程序算法或者進行加速。

sy: 內核系統進程執行時間百分比(system time)
sy的值高時,說明系統內核消耗的CPU資源多,這并不是良性表現,我們應該檢查原因。

wa: IO等待時間百分比
wa的值高時,說明IO等待比較嚴重,這可能由于磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。

id: 空閑時間百分比

pidstat

pidstat是sysstat工具的一個命令,用于監控全部或指定進程的cpu、內存、線程、設備IO等系統資源的占用情況。pidstat首次運行時顯示自系統啟動開始的各項統計信息,之后運行pidstat將顯示自上次運行該命令以后的統計信息。用戶可以通過指定統計的次數和時間來獲得所需的統計信息。

pidstat 的用法:

pidstat [ 選項 ] [ <時間間隔> ] [ <次數> ]
  

[root@VM_2_4_centos ~]# pidstat -help
Usage: pidstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -C <command> ] [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -t ] [ -u ] [ -V ] [ -w ]
[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]

常用的參數:

-u:默認的參數,顯示各個進程的cpu使用統計
-r:顯示各個進程的內存使用統計
-d:顯示各個進程的IO使用情況
-p:指定進程號
-w:顯示每個進程的上下文切換情況
-t:顯示選擇任務的線程的統計信息外的額外信息
-T { TASK | CHILD | ALL }
這個選項指定了pidstat監控的。TASK表示報告獨立的task,CHILD關鍵字表示報告進程下所有線程統計信息。ALL表示報告獨立的task和task下面的所有線程。
注意:task和子線程的全局的統計信息和pidstat選項無關。這些統計信息不會對應到當前的統計間隔,這些統計信息只有在子線程kill或者完成的時候才會被收集。
-V:版本號
-h:在一行上顯示了所有活動,這樣其他程序可以容易解析。
-I:在SMP環境,表示任務的CPU使用率/內核數量
-l:顯示命令名和所有參數

示例一:查看所有進程的 CPU 使用情況( -u -p ALL)
pidstat
pidstat -u -p ALL
pidstat 和 pidstat -u -p ALL 是等效的。
pidstat 默認顯示了所有進程的cpu使用率。[root@VM_2_4_centos ~]# pidstat
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:29:28 PM       PID    %usr %system  %guest    %CPU   CPU  Command
05:29:28 PM         1    0.00    0.00    0.00    0.00     4  init
05:29:28 PM         3    0.00    0.00    0.00    0.00     0  migration/0
05:29:28 PM         4    0.00    0.00    0.00    0.00     0  ksoftirqd/0
05:29:28 PM         6    0.00    0.00    0.00    0.00     0  watchdog/0
05:29:28 PM         7    0.00    0.00    0.00    0.00     1  migration/1
05:29:28 PM         9    0.00    0.00    0.00    0.00     1  ksoftirqd/1
05:29:28 PM        10    0.00    0.00    0.00    0.00     1  watchdog/1
05:29:28 PM        11    0.00    0.00    0.00    0.00     2  migration/2
05:29:28 PM        13    0.00    0.00    0.00    0.00     2  ksoftirqd/2
05:29:28 PM        14    0.00    0.00    0.00    0.00     2  watchdog/2
05:29:28 PM        15    0.00    0.00    0.00    0.00     3  migration/3
05:29:28 PM        17    0.00    0.00    0.00    0.00     3  ksoftirqd/3
05:29:28 PM        18    0.00    0.00    0.00    0.00     3  watchdog/3
05:29:28 PM        19    0.00    0.00    0.00    0.00     4  migration/4
05:29:28 PM        21    0.00    0.00    0.00    0.00     4  ksoftirqd/4
05:29:28 PM        22    0.00    0.00    0.00    0.00     4  watchdog/4
05:29:28 PM        23    0.00    0.00    0.00    0.00     5  migration/5
05:29:28 PM        25    0.00    0.00    0.00    0.00     5  ksoftirqd/5
05:29:28 PM        26    0.00    0.00    0.00    0.00     5  watchdog/5詳細說明
PID:進程ID
%usr:進程在用戶空間占用cpu的百分比
%system:進程在內核空間占用cpu的百分比
%guest:進程在虛擬機占用cpu的百分比
%CPU:進程占用cpu的百分比
CPU:處理進程的cpu編號
Command:當前進程對應的命令
示例二: cpu使用情況統計(-u)
pidstat -u
使用-u選項,pidstat將顯示各活動進程的cpu使用統計,執行”pidstat -u”與單獨執行”pidstat”的效果一樣。示例三: 內存使用情況統計(-r)
pidstat -r
使用-r選項,pidstat將顯示各活動進程的內存使用統計:[root@VM_2_4_centos ~]# pidstat -r
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:30:53 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
05:30:53 PM         1      0.00      0.00   21392    652   0.00  init
05:30:53 PM       526      0.00      0.00   12848    576   0.00  udevd
05:30:53 PM       832      0.00      0.00    6120     88   0.00  agetty
05:30:53 PM       980      0.00      0.00   95244    720   0.00  auditd
05:30:53 PM       996      0.00      0.00  254004   5476   0.02  rsyslogd
05:30:53 PM      1048      0.02      0.00  592936  18728   0.06  YDService
05:30:53 PM      1097      0.00      0.00   23448    240   0.00  dbus-daemon
05:30:53 PM      1126      0.00      0.00    6124    112   0.00  acpid
05:30:53 PM      1236      0.01      0.00   82992   1088   0.00  master
05:30:53 PM      1242      0.00      0.00  102040   4052   0.01  sshd
05:30:53 PM      1251      0.00      0.00  110712   2260   0.01  bash
05:30:53 PM      1254      0.30      0.00  118452   1028   0.00  crond
05:30:53 PM      1263      0.00      0.00   83244   1460   0.00  qmgr
05:30:53 PM      1271      0.00      0.00   23120    216   0.00  atd
05:30:53 PM      1384      0.00      0.00    6108     88   0.00  mingetty
05:30:53 PM      1386      0.00      0.00    6108     96   0.00  mingetty
05:30:53 PM      1388      0.00      0.00    6108     92   0.00  mingetty
05:30:53 PM      1390      0.00      0.00    6108     92   0.00  mingetty
05:30:53 PM      1392      0.00      0.00    6108   2128   0.01  mingetty
05:30:53 PM      1394      0.00      0.00    6108     88   0.00  mingetty
05:30:53 PM      6722      0.00      0.00  149772   7564   0.02  barad_agent
05:30:53 PM      6726      0.14      0.00  152684   9320   0.03  barad_agentPID:進程標識符
Minflt/s:任務每秒發生的次要錯誤,不需要從磁盤中加載頁
Majflt/s:任務每秒發生的主要錯誤,需要從磁盤中加載頁
VSZ:虛擬地址大小,虛擬內存的使用KB
RSS:常駐集合大小,非交換區五里內存使用KB
Command:task命令名示例四:顯示各個進程的IO使用情況(-d)
pidstat -d[root@VM_2_4_centos ~]# pidstat -d
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:31:26 PM       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
05:31:26 PM         1      1.79     15.40      0.33  init
05:31:26 PM       127      0.00      0.00      0.00  khugepaged
05:31:26 PM       438      0.00      2.11      0.00  kjournald
05:31:26 PM       526      0.00      0.00      0.00  udevd
05:31:26 PM       790      0.00      1.85      0.00  kjournald
05:31:26 PM       832      0.00      0.00      0.00  agetty
05:31:26 PM       980      0.00      0.46      0.00  auditd
05:31:26 PM       996      0.00      0.17      0.00  rsyslogd
05:31:26 PM      1048      0.00      0.00      0.00  YDService
05:31:26 PM      1126      0.00      0.00      0.00  acpid
05:31:26 PM      1236      0.00      0.00      0.00  master
05:31:26 PM      1242      0.00      0.00      0.00  sshd
05:31:26 PM      1251      0.00      0.00      0.00  bash
05:31:26 PM      1254      0.00      0.00      0.00  crond
05:31:26 PM      1263      0.00      0.00      0.00  qmgr
05:31:26 PM      1271      0.00      0.00      0.00  atd
05:31:26 PM      1384      0.00      0.00      0.00  mingetty
05:31:26 PM      1392      0.00      0.00      0.00  mingetty
05:31:26 PM      6722      0.00      0.00      0.00  barad_agent
05:31:26 PM      6726      0.00      0.01      0.00  barad_agent報告IO統計顯示以下信息:PID:進程id
kB_rd/s:每秒從磁盤讀取的KB
kB_wr/s:每秒寫入磁盤KB
kB_ccwr/s:任務取消的寫入磁盤的KB。當任務截斷臟的pagecache的時候會發生。
COMMAND:task的命令名示例五:顯示每個進程的上下文切換情況(-w)[root@VM_2_4_centos ~]# pidstat -w -p 10154
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:32:37 PM       PID   cswch/s nvcswch/s  Command
05:32:37 PM     10154      0.00      0.00  zabbix_agentd
PID:進程id
Cswch/s:每秒主動任務上下文切換數量
Nvcswch/s:每秒被動任務上下文切換數量
Command:命令名示例六:顯示選擇任務的線程的統計信息外的額外信息 (-t)[root@VM_2_4_centos ~]# pidstat -t -p 10154
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:33:21 PM      TGID       TID    %usr %system  %guest    %CPU   CPU  Command
05:33:21 PM     10154         -    0.00    0.00    0.00    0.00     2  zabbix_agentd
05:33:21 PM         -     10154    0.00    0.00    0.00    0.00     2  |__zabbix_agentdTGID:主線程的表示
TID:線程id
%usr:進程在用戶空間占用cpu的百分比
%system:進程在內核空間占用cpu的百分比
%guest:進程在虛擬機占用cpu的百分比
%CPU:進程占用cpu的百分比
CPU:處理進程的cpu編號
Command:當前進程對應的命令示例七:pidstat -T
pidstat -T TASK
pidstat -T CHILD
pidstat -T ALL
TASK表示報告獨立的task。
CHILD關鍵字表示報告進程下所有線程統計信息。
ALL表示報告獨立的task和task下面的所有線程。注意:task和子線程的全局的統計信息和pidstat選項無關。這些統計信息不會對應到當前的統計間隔,這些統計信息只有在子線程kill或者完成的時候才會被收集。[root@VM_2_4_centos ~]# pidstat -T ALL -p 10154
Linux 2.6.32-696.6.3.el6.x86_64 (VM_2_4_centos)     06/20/2019  _x86_64_    (8 CPU)05:34:13 PM       PID    %usr %system  %guest    %CPU   CPU  Command
05:34:13 PM     10154    0.00    0.00    0.00    0.00     2  zabbix_agentd05:34:13 PM       PID    usr-ms system-ms  guest-ms  Command
05:34:13 PM     10154         0         0         0  zabbix_agentd
PID:進程id
Usr-ms:任務和子線程在用戶級別使用的毫秒數。
System-ms:任務和子線程在系統級別使用的毫秒數。
Guest-ms:任務和子線程在虛擬機(running a virtual processor)使用的毫秒數。
Command:命令名

sar

sar(SYstem ActivityReporter系統活動情況報告)是目前Linux上最為全面的系統性能分析工具之一,可以從多方面對系統的活動進行報告,包括:文件的讀寫情況,系統調用的使用情況,磁盤I/O,CPU效率,內存使用狀況,進程活動及IPC有關的活動;

語法格式

sar [ 選項 ] [ <時間間隔> [ <次數> ] ]

?sar -h 顯示:

-A:所有報告的總和

-b:顯示I/O和傳遞速率的統計信息

-B:顯示換頁狀態

-d:輸出每一塊磁盤的使用信息

-e:設置顯示報告的結束時間

-f:從制定的文件讀取報告

-i:設置狀態信息刷新的間隔時間

-P:報告每個CPU的狀態

-R:顯示內存狀態

–u:輸出cpu使用情況和統計信息

–v:顯示索引節點、文件和其他內核表的狀態

-w:顯示交換分區的狀態

-x:顯示給定進程的裝

-r:報告內存利用率的統計信息

使用總結

默認監控: sar 1 1 ? ? // ?CPU和IOWAIT統計狀態?
(1) sar -b 1 1 ? ? ? ?// IO傳送速率
(2) sar -B 1 1 ? ? ? ?// 頁交換速率
(3) sar -c 1 1 ? ? ? ?// 進程創建的速率
(4) sar -d 1 1 ? ? ? ?// 塊設備的活躍信息
(5) sar -n DEV 1 1 ? ?// 網路設備的狀態信息
(6) sar -n SOCK 1 1 ? // SOCK的使用情況
(7) sar -n ALL 1 1 ? ?// 所有的網絡狀態信息
(8) sar -P ALL 1 1 ? ?// 每顆CPU的使用狀態信息和IOWAIT統計狀態?
(9) sar -q 1 1 ? ? ? ?// 隊列的長度(等待運行的進程數)和負載的狀態
(10) sar -r 1 1 ? ? ?// 內存和swap空間使用情況
(11) sar -R 1 1 ? ? ? // 內存的統計信息(內存頁的分配和釋放、系統每秒作為BUFFER使用內存頁、每秒被cache到的內存頁)
(12) sar -u 1 1 ? ? ? // CPU的使用情況和IOWAIT信息(同默認監控)
(13) sar -v 1 1 ? ? ? // inode, file and other kernel tablesd的狀態信息
(14) sar -w 1 1 ? ? ? // 每秒上下文交換的數目
(15) sar -W 1 1 ? ? ? // SWAP交換的統計信息(監控狀態同iostat 的si so)
(16) sar -x 2906 1 1 ?// 顯示指定進程(2906)的統計信息,信息包括:進程造成的錯誤、用戶級和系統級用戶CPU的占用情況、運行在哪顆CPU上
(17) sar -y 1 1 ? ? ? // TTY設備的活動狀態
(18) 將輸出到文件(-o)和讀取記錄信息(-f)

1.查看CPU使用情況 ?sar -u

sar 1 3 ?或 sar -u 1 3

%user ? 用戶空間的CPU使用

%nice ? 改變過優先級的進程的CPU使用率

%system ? 內核空間的CPU使用率

%iowait ? CPU等待IO的百分比?

%steal ? 虛擬機的虛擬機CPU使用的CPU

%idle ? 空閑的CPU

在以上的顯示當中,主要看%iowait和%idle,%iowait過高表示存在I/O瓶頸,即磁盤IO無法滿足業務需求,如果%idle過低表示CPU使用率比較嚴重,需要結合內存使用等情況判斷CPU是否瓶頸。

2.將統計結果保存到文件 sar -o ?& ?sar -f

sar -o test 1 3 ? #保存
sar -f test ? ? ? #查看

?3.查看平均負載 ?sar -q

sar -q 1 3

?runq-sz ? ?運行隊列的長度(等待運行的進程數,每核的CP不能超過3個)

plist-sz ? 進程列表中的進程(processes)和線程數(threads)的數量

ldavg-1 ?最后1分鐘的CPU平均負載,即將多核CPU過去一分鐘的負載相加再除以核心數得出的平均值,5分鐘和15分鐘以此類推

ldavg-5 ? 最后5分鐘的CPU平均負載

ldavg-15 ?最后15分鐘的CPU平均負載

blocked ??

4.查看內存使用情況 ?sar -r

sar -r 1 3

kbmemfree ? 空閑的物理內存大小

kbmemused ? 使用中的物理內存大小

%memused ?物理內存使用率

kbbuffers ?內核中作為緩沖區使用的物理內存大小,kbbuffers和kbcached:這兩個值就是free命令中的buffer和cache.?

kbcached ?緩存的文件大小

kbcommit ? 保證當前系統正常運行所需要的最小內存,即為了確保內存不溢出而需要的最少內存(物理內存+Swap分區)

commit ? 這個值是kbcommit與內存總量(物理內存+swap分區)的一個百分比的值

kbactive ?

kbinact?

kbdirty?

5.查看系統swap分區統計情況 ?sar -W

sar -W 1 3

?pswpin/s ? ?每秒從交換分區到系統的交換頁面(swap page)數量

pswpott/s ? 每秒從系統交換到swap的交換頁面(swap page)的數量

6.查看IO和傳遞速率 ?sar -b

sar -b 1 3

tps ?磁盤每秒鐘的IO總數,等于iostat中的tps

rtps ?每秒鐘從磁盤讀取的IO總數

wtps ?每秒鐘從寫入到磁盤的IO總數

bread/s ?每秒鐘從磁盤讀取的塊總數

bwrtn/s ?每秒鐘此寫入到磁盤的塊總數

7.查看磁盤使用情況 ?sar -d

sar -d

?DEV ?磁盤設備的名稱,如果不加-p,會顯示dev253-0類似的設備名稱,因此加上-p顯示的名稱更直接

tps ?每秒I/O的傳輸總數

rd_sec/s ?每秒讀取的扇區的總數

wr_sec/s ?每秒寫入的扇區的總數

avgrq-sz ?平均每次次磁盤I/O操作的數據大小(扇區)

avgqu-sz ?磁盤請求隊列的平均長度

await ?從請求磁盤操作到系統完成處理,每次請求的平均消耗時間,包括請求隊列等待時間,單位是毫秒(1秒等于1000毫秒),等于尋道時間+隊列時間+服務時間

svctm ?I/O的服務處理時間,即不包括請求隊列中的時間

%util ?I/O請求占用的CPU百分比,值越高,說明I/O越慢

8. 統計網絡信息 sar -n?
? ? -n { <關鍵詞> [,...] | ALL }
? ? ? ? 關鍵詞可以是:
? ? ? ? DEV ? ?網卡
? ? ? ? EDEV ? ?網卡 (錯誤)
? ? ? ? NFS ? ?NFS 客戶端
? ? ? ? NFSD ? ?NFS 服務器
? ? ? ? SOCK ? ?Sockets (套接字) ? ?(v4)
? ? ? ? IP ? ?IP 流 ? ?(v4)
? ? ? ? EIP ? ?IP 流 ? ?(v4) (錯誤)
? ? ? ? ICMP ? ?ICMP 流 ? ?(v4)
? ? ? ? EICMP ? ?ICMP 流 ? ?(v4) (錯誤)
? ? ? ? TCP ? ?TCP 流 ? ?(v4)
? ? ? ? ETCP ? ?TCP 流 ? ?(v4) (錯誤)
? ? ? ? UDP ? ?UDP 流 ? ?(v4)
? ? ? ? SOCK6 ? ?Sockets (套接字) ? ?(v6)
? ? ? ? IP6 ? ?IP 流 ? ?(v6)
? ? ? ? EIP6 ? ?IP 流 ? ?(v6) (錯誤)
? ? ? ? ICMP6 ? ?ICMP 流 ? ?(v6)
? ? ? ? EICMP6 ? ?ICMP 流 ? ?(v6) (錯誤)
? ? ? ? UDP6 ? ?UDP 流 ? ?(v6)


8.1 ?網絡接口信息 sar -n DEV

sar -n DEV 1 1

IFACE ?本地網卡接口的名稱

rxpck/s ?每秒鐘接受的數據包

txpck/s ?每秒鐘發送的數據庫

rxKB/S ?每秒鐘接受的數據包大小,單位為KB

txKB/S ?每秒鐘發送的數據包大小,單位為KB

rxcmp/s ?每秒鐘接受的壓縮數據包

txcmp/s ?每秒鐘發送的壓縮包

rxmcst/s ?每秒鐘接收的多播數據包 ? ?

8.2 網絡設備通信失敗信息 sar -n EDVE

sar -n EDEV 1 1

IFACE 網卡名稱

rxerr/s ?每秒鐘接收到的損壞的數據包

txerr/s ?每秒鐘發送的數據包錯誤數

coll/s ?當發送數據包時候,每秒鐘發生的沖撞(collisions)數,這個是在半雙工模式下才有

rxdrop/s ?當由于緩沖區滿的時候,網卡設備接收端每秒鐘丟掉的網絡包的數目

txdrop/s 當由于緩沖區滿的時候,網絡設備發送端每秒鐘丟掉的網絡包的數目

txcarr/s ?當發送數據包的時候,每秒鐘載波錯誤發生的次數

rxfram/s ? 在接收數據包的時候,每秒鐘發生的幀對其錯誤的次數

rxfifo/s ? ?在接收數據包的時候,每秒鐘緩沖區溢出的錯誤發生的次數

txfifo/s ? ?在發生數據包 的時候,每秒鐘緩沖區溢出的錯誤發生的次數

8.3統計socket連接信息 ?sar -n SOCK

sar -n SOCK 1 1

?totsck ?當前被使用的socket總數

tcpsck ?當前正在被使用的TCP的socket總數

udpsck ? 當前正在被使用的UDP的socket總數

rawsck ?當前正在被使用于RAW的skcket總數

if-frag ? 當前的IP分片的數目

tcp-tw ?TCP套接字中處于TIME-WAIT狀態的連接數量

8.4 TCP連接的統計 ?sar -n TCP?

sar -n TCP 1 1

active/s ?新的主動連接

passive/s ?新的被動連接

iseg/s ?接受的段

oseg/s ?輸出的段

kill

Linux kill 命令用于刪除執行中的程序或工作。

kill 可將指定的信息送至程序。預設的信息為 SIGTERM(15),可將指定程序終止。若仍無法終止該程序,可使用 SIGKILL(9) 信息嘗試強制刪除程序。程序或工作的編號可利用 ps 指令或 jobs 指令查看。

語法

kill [-s <信息名稱或編號>][程序] 或 kill [-l <信息編號>]

參數說明:

-l <信息編號> 若不加<信息編號>選項,則 -l 參數會列出全部的信息名稱。
-s <信息名稱或編號> 指定要送出的信息。
[程序] [程序]可以是程序的PID或是PGID,也可以是工作編號。
使用 kill -l 命令列出所有可用信號。

最常用的信號是:1 (HUP):重新加載進程。
9 (KILL):殺死一個進程。
15 (TERM):正常停止一個進程。

殺死進程# kill 12345強制殺死進程# kill -KILL 123456發送SIGHUP信號,可以使用一下信號# kill -HUP pid徹底殺死進程# kill -9 123456顯示信號# kill -l
1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX殺死指定用戶所有進程#kill -9 $(ps -ef | grep hnlinux) //方法一 過濾出hnlinux用戶進程
#kill -u hnlinux //方法二

內存相關命令

free

Linux free命令用于顯示內存狀態。

free指令會顯示內存的使用情況,包括實體內存,虛擬的交換文件內存,共享內存區段,以及系統核心使用的緩沖區等。

語法

free [-bkmotV][-s <間隔秒數>]

參數說明:

-b  以Byte為單位顯示內存使用情況。
-k  以KB為單位顯示內存使用情況。
-m  以MB為單位顯示內存使用情況。
-h  以合適的單位顯示內存使用情況,最大為三位數,自動計算對應的單位值。單位有:B = bytes
K = kilos
M = megas
G = gigas
T = teras
-o  不顯示緩沖區調節列。
-s<間隔秒數>  持續觀察內存使用狀況。
-t  顯示內存總和列。
-V  顯示版本信息。

顯示內存使用情況# free //顯示內存使用信息
total used free shared buffers cached
Mem: 254772 184568 70204 0 5692 89892
-/+ buffers/cache: 88984 165788
Swap: 524280 65116 459164
以總和的形式顯示內存的使用信息# free -t //以總和的形式查詢內存的使用信息
total used free shared buffers cached
Mem: 254772 184868 69904 0 5936 89908
-/+ buffers/cache: 89024 165748
Swap: 524280 65116 459164
Total: 779052 249984 529068
周期性的查詢內存使用信息# free -s 10 //每10s 執行一次命令
total used free shared buffers cached
Mem: 254772 187628 67144 0 6140 89964
-/+ buffers/cache: 91524 163248
Swap: 524280 65116 459164total used free shared buffers cached
Mem: 254772 187748 67024 0 6164 89940
-/+ buffers/cache: 91644 163128
Swap: 524280 65116 459164

pmap

Pmap 提供了進程的內存映射,pmap命令用于顯示一個或多個進程的內存狀態。其報告進程的地址空間和內存狀態信息。Pmap實際上是一個Sun OS上的命令,linux僅支持其有限的功能。但是它還是對查看完整的進程地址空間很有幫助。我們需要PID或者運行的進程的唯一進程ID來查看進程內存狀態,我們可以通過/proc或者常規命令比如top或ps得到它。

名稱:
? ? ? pmap - report memory map of a process(查看進程的內存映像信息)

用法
? ? ? pmap [ -x | -d ] [ -q ] pids...

? ? ? pmap -V

選項含義
? ? ? -x ? extended ? ? ? Show the extended format. 顯示擴展格式

? ? ? ?-d ?device ? ? ? ? Show the deviceformat. ? 顯示設備格式

? ? ? -q ? quiet ? ? ? ? ?Do not display some header/footerlines. 不顯示頭尾行

? ? ? -V ? show version ? Displays version of program. 顯示版本

擴展格式和設備格式域:
? ? ? ?Address: ?start address ofmap ?映像起始地址

? ? ? ? Kbytes: size of map in kilobytes ?映像大小

? ? ? ?RSS: ?resident set size inkilobytes ?駐留集大小

? ? ? ?Dirty: ?dirty pages (both sharedand private) in kilobytes ?臟頁大小

? ? ? ?Mode: ?permissions on map 映像權限: r=read,w=write, x=execute, s=shared, p=private (copy on write)?

? ? ? ?Mapping: ?file backing the map ,or '[ anon ]' for allocated memory, or '[ stack ]' for the program stack. ?映像支持文件,[anon]為已分配內存[stack]為程序堆棧

? ? ? ? Offset: offset into the file ?文件偏移

? ? ? ?Device: ?device name(major:minor) ?設備名

查看進程1的設備格式[root@C44 ~]# ?pmap -d 11: ?init [5] ? ? ? ? ? ? ? ? ??Address ?Kbytes Mode ?Offset ? ? ? ? ? Device ? ?Mapping00934000 ? ? ?88 r-x-- 0000000000000000 008:00005ld-2.3.4.so0094a000 ? ? ? 4 r---- 0000000000015000 008:00005ld-2.3.4.so0094b000 ? ? ? 4 rw--- 0000000000016000 008:00005ld-2.3.4.so0094e000 ? 1188 r-x-- 0000000000000000 008:00005 libc-2.3.4.so00a77000 ? ? ? 8 r---- 0000000000129000 008:00005libc-2.3.4.so00a79000 ? ? ? 8 rw--- 000000000012b000 008:00005libc-2.3.4.so00a7b000 ? ? ? 8 rw--- 0000000000a7b000 000:00000 ? [ anon ]00a85000 ? ? ?52 r-x-- 0000000000000000 008:00005libsepol.so.100a92000 ? ? ? 4 rw--- 000000000000c000 008:00005libsepol.so.100a93000 ? ? ?32 rw--- 0000000000a93000 000:00000 ? [ anon ]00d9d000 ? ? ?52 r-x-- 0000000000000000 008:00005libselinux.so.100daa000 ? ? ? 4 rw--- 000000000000d000 008:00005libselinux.so.108048000 ? ? ?28 r-x-- 0000000000000000 008:00005 init0804f000 ? ? ? 4 rw--- 0000000000007000 008:00005 init084e1000 ? ?132 rw--- 00000000084e1000 000:00000 ?[ anon ]b7f5d000 ? ? ? 8 rw--- 00000000b7f5d000 000:00000 ? [ anon ]bffee000 ? ? ?72 rw--- 00000000bffee000 000:00000 ? [ stack ]ffffe000 ? ? ? 4 ----- 0000000000000000 000:00000 ? [ anon ]mapped: 1700K ? ?writeable/private: 276K ? ?shared: 0K[root@C44 ~]#?最后一行的值mapped 表示該進程映射的虛擬地址空間大小,也就是該進程預先分配的虛擬內存大小,即ps出的vszwriteable/private ?表示進程所占用的私有地址空間大小,也就是該進程實際使用的內存大小 ? ??shared 表示進程和其他進程共享的內存大小查看進程1的設備格式,不顯示頭尾行[root@C44 ~]# ?pmap -d -q 11: ?init [5] ? ? ? ? ? ? ? ? ??00934000 ? ? ?88 r-x-- 0000000000000000 008:00005ld-2.3.4.so0094a000 ? ? ? 4 r---- 0000000000015000 008:00005ld-2.3.4.so0094b000 ? ? ? 4 rw--- 0000000000016000 008:00005ld-2.3.4.so0094e000 ? 1188 r-x-- 0000000000000000 008:00005 libc-2.3.4.so00a77000 ? ? ? 8 r---- 0000000000129000 008:00005libc-2.3.4.so00a79000 ? ? ? 8 rw--- 000000000012b000 008:00005libc-2.3.4.so00a7b000 ? ? ? 8 rw--- 0000000000a7b000 000:00000 ? [ anon ]00a85000 ? ? ?52 r-x-- 0000000000000000 008:00005libsepol.so.100a92000 ? ? ? 4 rw--- 000000000000c000 008:00005libsepol.so.100a93000 ? ? ?32 rw--- 0000000000a93000 000:00000 ? [ anon ]00d9d000 ? ? ?52 r-x-- 0000000000000000 008:00005libselinux.so.100daa000 ? ? ? 4 rw--- 000000000000d000 008:00005libselinux.so.108048000 ? ? ?28 r-x-- 0000000000000000 008:00005 init0804f000 ? ? ?4 rw--- 0000000000007000008:00005 init084e1000 ? ?132 rw--- 00000000084e1000 000:00000 ?[ anon ]b7f5d000 ? ? ? 8 rw--- 00000000b7f5d000 000:00000 ? [ anon ]bffee000 ? ? ?72 rw--- 00000000bffee000 000:00000 ? [ stack ]ffffe000 ? ? ? 4 ----- 0000000000000000 000:00000 ? [ anon ][root@C44 ~]#?查看進程1的擴展格式[root@C44 ~]# ?pmap -x 11: ?init [5] ? ? ? ? ? ? ? ? ??Address ?Kbytes ? ? RSS ? ?Anon Locked Mode ? Mapping00934000 ? ? ?88 ? ? ?- ? ? ? - ? ? ? - r-x-- ld-2.3.4.so0094a000 ? ? ? 4 ? ? ?- ? ? ? - ? ? ? - r---- ld-2.3.4.so0094b000 ? ? ? 4 ? ? ?- ? ? ? - ? ? ? - rw--- ld-2.3.4.so0094e000 ? 1188 ? ? ? - ? ? ? - ? ? ?- r-x-- ?libc-2.3.4.so00a77000 ? ? ? 8 ? ? ?- ? ? ? - ? ? ? - r---- libc-2.3.4.so00a79000 ? ? ? 8 ? ? ?- ? ? ? - ? ? ? - rw--- libc-2.3.4.so00a7b000 ? ? ? 8 ? ? ?- ? ? ? - ? ? ? - rw--- ? ?[ anon ]00a85000 ? ? ?52 ? ? ?- ? ? ? - ? ? ? - r-x-- libsepol.so.100a92000 ? ? ? 4 ? ? ?- ? ? ? - ? ? ? - rw--- libsepol.so.100a93000 ? ? 32 ? ? ? - ? ? ?- ? ? ? - rw--- ? ?[ anon ]00d9d000 ? ? ?52 ? ? ?- ? ? ? - ? ? ? - r-x-- libselinux.so.100daa000 ? ? ? 4 ? ? ?- ? ? ? - ? ? ? - rw--- libselinux.so.108048000 ? ? ?28 ? ? ?- ? ? ? - ? ? ? - r-x-- init0804f000 ? ? ? 4 ? ? ?- ? ? ? - ? ? ?- rw--- ?init084e1000 ? ?132 ? ? ? - ? ? ? - ? ? ?- rw--- ? ?[ anon ]b7f5d000 ? ? ? 8 ? ? ?- ? ? ? - ? ? ? - rw--- ? ?[ anon ]bffee000 ? ? ?72 ? ? ?- ? ? ? - ? ? ? - rw--- ? ?[ stack ]ffffe000 ? ? ? 4 ? ? ?- ? ? ? - ? ? ? - ----- ? ?[ anon ]-------- ------- ------- ------- -------total kB ? 1700 ? ? ? - ? ? ? - ? ? ?-[root@C44 ~]#?循環顯示進程3066的設備格式的最后1行,間隔2秒,[root@C44 ~]# ?while true; do pmap -d ?3066 | tail -1; sleep 2; donemapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0Kmapped: 5412K ? ?writeable/private: 2028K ? ?shared: 0K

IO相關命令

df

Linux df(英文全拼:disk free) 命令用于顯示目前在 Linux 系統上的文件系統磁盤使用情況統計。

語法

df [選項]... [FILE]...

文件-a, --all 包含所有的具有 0 Blocks 的文件系統
文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
文件-h, --human-readable 使用人類可讀的格式(預設值是不加這個選項的...)
文件-H, --si 很像 -h, 但是用 1000 為單位而不是用 1024
文件-i, --inodes 列出 inode 資訊,不列出已使用 block
文件-k, --kilobytes 就像是 --block-size=1024
文件-l, --local 限制列出的文件結構
文件-m, --megabytes 就像 --block-size=1048576
文件--no-sync 取得資訊前不 sync (預設值)
文件-P, --portability 使用 POSIX 輸出格式
文件--sync 在取得資訊前 sync
文件-t, --type=TYPE 限制列出文件系統的 TYPE
文件-T, --print-type 顯示文件系統的形式
文件-x, --exclude-type=TYPE 限制列出文件系統不要顯示 TYPE
文件-v (忽略)
文件--help 顯示這個幫手并且離開
文件--version 輸出版本資訊并且離開

顯示文件系統的磁盤使用情況統計:# df
Filesystem     1K-blocks    Used     Available Use% Mounted on
/dev/sda6       29640780 4320704     23814388  16%     /
udev             1536756       4     1536752    1%     /dev
tmpfs             617620     888     616732     1%     /run
none                5120       0     5120       0%     /run/lock
none             1544044     156     1543888    1%     /run/shm第一列指定文件系統的名稱,第二列指定一個特定的文件系統1K-塊1K是1024字節為單位的總內存。用和可用列正在使用中,分別指定的內存量。使用列指定使用的內存的百分比,而最后一欄"安裝在"指定的文件系統的掛載點。df也可以顯示磁盤使用的文件系統信息:# df test
Filesystem     1K-blocks    Used      Available Use% Mounted on
/dev/sda6       29640780    4320600   23814492  16%       /用一個-i選項的df命令的輸出顯示inode信息而非塊使用量。df -i
Filesystem      Inodes    IUsed    IFree     IUse% Mounted on
/dev/sda6      1884160    261964   1622196   14%        /
udev           212748     560      212188    1%         /dev
tmpfs          216392     477      215915    1%         /run
none           216392     3        216389    1%         /run/lock
none           216392     8        216384    1%         /run/shm顯示所有的信息:# df --total
Filesystem     1K-blocks    Used    Available Use% Mounted on
/dev/sda6       29640780 4320720    23814372  16%     /
udev             1536756       4    1536752   1%      /dev
tmpfs             617620     892    616728    1%      /run
none                5120       0    5120      0%      /run/lock
none             1544044     156    1543888   1%      /run/shm
total           33344320 4321772    27516860  14%我們看到輸出的末尾,包含一個額外的行,顯示總的每一列。-h選項,通過它可以產生可讀的格式df命令的輸出:# df -h
Filesystem      Size  Used   Avail Use% Mounted on
/dev/sda6       29G   4.2G   23G   16%     /
udev            1.5G  4.0K   1.5G   1%     /dev
tmpfs           604M  892K   603M   1%     /run
none            5.0M     0   5.0M   0%     /run/lock
none            1.5G  156K   1.5G   1%     /run/shm我們可以看到輸出顯示的數字形式的'G'(千兆字節),"M"(兆字節)和"K"(千字節)。這使輸出容易閱讀和理解,從而使顯示可讀的。請注意,第二列的名稱也發生了變化,為了使顯示可讀的"大小"。

網絡相關命令

netstat

Netstat 命令用于顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。

輸出信息含義

執行netstat后,其輸出結果為

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE

Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 16178 @000000dd
unix 1 [ ] STREAM CONNECTED 16176 @000000dc
unix 9 [ ] DGRAM 5292 /dev/log
unix 1 [ ] STREAM CONNECTED 16182 @000000df

從整體上看,netstat的輸出結果可以分為兩個部分:

一個是Active Internet connections,稱為有源TCP連接,其中"Recv-Q"和"Send-Q"指%0A的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟件包正在隊列中堆積。這種情況只能在非常少的情況見到。

另一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是只能用于本機通信,性能可以提高一倍)。
Proto顯示連接使用的協議,RefCnt表示連接到本套接口上的進程號,Types顯示套接口的類型,State顯示套接口當前的狀態,Path表示連接到套接口的其它進程使用的路徑名。

常見參數

-a (all)顯示所有選項,默認不顯示LISTEN相關
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀態

-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。

提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到

實用命令實例

1. 列出所有端口 (包括監聽和未監聽的)
列出所有端口 netstat -a# netstat -a | moreActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:30037         *:*                     LISTENudp        0      0 *:bootpc                *:*Active UNIX domain sockets (servers and established)Proto RefCnt Flags       Type       State         I-Node   Pathunix  2      [ ACC ]     STREAM     LISTENING     6135     /tmp/.X11-unix/X0unix  2      [ ACC ]     STREAM     LISTENING     5140     /var/run/acpid.socket
列出所有 tcp 端口 netstat -at# netstat -atActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:30037         *:*                     LISTENtcp        0      0 localhost:ipp           *:*                     LISTENtcp        0      0 *:smtp                  *:*                     LISTENtcp6       0      0 localhost:ipp           [::]:*                  LISTEN
列出所有 udp 端口 netstat -au# netstat -auActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         Stateudp        0      0 *:bootpc                *:*udp        0      0 *:49119                 *:*udp        0      0 *:mdns                  *:*2. 列出所有處于監聽狀態的 Sockets只顯示監聽端口 netstat -l# netstat -lActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:ipp           *:*                     LISTENtcp6       0      0 localhost:ipp           [::]:*                  LISTENudp        0      0 *:49119                 *:*只列出所有監聽 tcp 端口 netstat -lt# netstat -ltActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 localhost:30037         *:*                     LISTENtcp        0      0 *:smtp                  *:*                     LISTENtcp6       0      0 localhost:ipp           [::]:*                  LISTEN只列出所有監聽 udp 端口 netstat -lu# netstat -luActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         Stateudp        0      0 *:49119                 *:*udp        0      0 *:mdns                  *:*只列出所有監聽 UNIX 端口 netstat -lx# netstat -lxActive UNIX domain sockets (only servers)Proto RefCnt Flags       Type       State         I-Node   Pathunix  2      [ ACC ]     STREAM     LISTENING     6294     private/maildropunix  2      [ ACC ]     STREAM     LISTENING     6203     public/cleanupunix  2      [ ACC ]     STREAM     LISTENING     6302     private/ifmailunix  2      [ ACC ]     STREAM     LISTENING     6306     private/bsmtp3. 顯示每個協議的統計信息顯示所有端口的統計信息 netstat -s# netstat -sIp:11150 total packets received1 with invalid addresses0 forwarded0 incoming packets discarded11149 incoming packets delivered11635 requests sent outIcmp:0 ICMP messages received0 input ICMP message failed.Tcp:582 active connections openings2 failed connection attempts25 connection resets receivedUdp:1183 packets received4 packets to unknown port received......顯示 TCP 或 UDP 端口的統計信息 netstat -st 或 -su# netstat -st
# netstat -su4. 在 netstat 輸出中顯示 PID 和進程名稱 netstat -p
netstat -p 可以與其它開關一起使用,就可以添加 “PID/進程名稱” 到 netstat 輸出中,這樣 debugging 的時候可以很方便的發現特定端口運行的程序。# netstat -ptActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program nametcp        1      0 ramesh-laptop.loc:47212 192.168.185.75:www        CLOSE_WAIT  2109/firefoxtcp        0      0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox5. 在 netstat 輸出中不顯示主機,端口和用戶名 (host, port or user)
當你不想讓主機,端口和用戶名顯示,使用 netstat -n。將會使用數字代替那些名稱。同樣可以加速輸出,因為不用進行比對查詢。# netstat -an如果只是不想讓這三個名稱中的一個被顯示,使用以下命令# netsat -a --numeric-ports
# netsat -a --numeric-hosts
# netsat -a --numeric-users6. 持續輸出 netstat 信息
netstat 將每隔一秒輸出網絡信息。# netstat -cActive Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address           Foreign Address         Statetcp        0      0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHEDtcp        1      1 ramesh-laptop.loc:52564 101.11.169.230:www      CLOSINGtcp        0      0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHEDtcp        1      1 ramesh-laptop.loc:42367 101.101.34.101:www      CLOSING^C7. 顯示系統不支持的地址族 (Address Families)
netstat --verbose在輸出的末尾,會有如下的信息netstat: no support for `AF IPX' on this system.
netstat: no support for `AF AX25' on this system.
netstat: no support for `AF X25' on this system.
netstat: no support for `AF NETROM' on this system.8. 顯示核心路由信息 netstat -r
# netstat -rKernel IP routing tableDestination     Gateway         Genmask         Flags   MSS Window  irtt Iface192.168.1.0     *               255.255.255.0   U         0 0          0 eth2link-local      *               255.255.0.0     U         0 0          0 eth2default         192.168.1.1     0.0.0.0         UG        0 0          0 eth2注意: 使用 netstat -rn 顯示數字格式,不查詢主機名稱。9. 找出程序運行的端口
并不是所有的進程都能找到,沒有權限的會不顯示,使用 root 權限查看所有的信息。# netstat -ap | grep sshtcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  -tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -找出運行在指定端口的進程# netstat -an | grep ':80'10. 顯示網絡接口列表
# netstat -iKernel Interface tableIface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flgeth0       1500 0         0      0      0 0             0      0      0      0 BMUeth2       1500 0     26196      0      0 0         26883      6      0      0 BMRUlo        16436 0         4      0      0 0             4      0      0      0 LRU顯示詳細信息,像是 ifconfig 使用 netstat -ie:# netstat -ieKernel Interface tableeth0      Link encap:Ethernet  HWaddr 00:10:40:11:11:11UP BROADCAST MULTICAST  MTU:1500  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)Memory:f6ae0000-f6b0000011. IP和TCP分析查看連接某服務端口最多的的IP地址wss8848@ubuntu:~$ netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
18 221.136.168.36
3 154.74.45.242
2 78.173.31.236
2 62.183.207.98
2 192.168.1.14
2 182.48.111.215
2 124.193.219.34
2 119.145.41.2
2 114.255.41.30
1 75.102.11.99TCP各種狀態列表wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'
established)
Foreign
LISTEN
TIME_WAIT
ESTABLISHED
TIME_WAIT
SYN_SENT先把狀態全都取出來,然后使用uniq -c統計,之后再進行排序。wss8848@ubuntu:~$ netstat -nat |awk '{print $6}'|sort|uniq -c
143 ESTABLISHED
1 FIN_WAIT1
1 Foreign
1 LAST_ACK
36 LISTEN
6 SYN_SENT
113 TIME_WAIT
1 established)最后的命令如下:netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn分析access.log獲得訪問前10位的ip地址awk '{print $1}' access.log |sort|uniq -c|sort -nr|head -10

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/154846.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息