1. 前言
本文主要介紹如何使用linux命令來檢視程序狀態和資訊。
程序識別符號process identifier (pid)是linux / unix核心(windows作業系統也不例外)用來標識程序的數字號碼。通常來說,使用fork system call系統呼叫建立新程序。可以在linux下監視每個pid(通常也叫任務)。在本教程中,我將解釋怎麼使用pidstat命令監視當前由linux核心管理的各個任務。
2. `pidstat`命令介紹
pidstat命令還可用於監視所選任務的子程序,該命令具有以下功能:
檢視指定程序狀態資訊
檢視指定程序的磁碟狀態資訊,apache/nginx/lighttpd /o資訊和他們子程序的狀態資訊
檢視執行緒關聯的任務統計資訊
檢視每個活動任務的cpu統計資訊報告。
檢視特定程序的頁面錯誤和記憶體利用率
確認特定程序的記憶體洩漏。
其它更多
3. 安裝`pidstat`
要使用使用pidstat命令,必須先安裝pidstat命令
[root@zcwyou ~]# yum -y install pidstat
已載入外掛程式:fastestmirror
loading mirror speeds from cached hostfile
表明沒有在倉庫中找到這個包。
使用yum provides找到pidstat命令所依賴的包
[root@zcwyou ~]# yum provides pidstat
已載入外掛程式:fastestmirror
loading mirror speeds from cached hostfile
找到pidstat命令所對應的包名為sysstat
[root@zcwyou ~]# yum -y install sysstat
running transaction
正在安裝 : lm_sensors-libs-3.4.0-6.20160601gitf9185e5.el7.x86_64 1/2
正在安裝 : sysstat-10.1.5-17.el7.x86_64 2/2
驗證中 : lm_sensors-libs-3.4.0-6.20160601gitf9185e5.el7.x86_64 1/2
驗證中 : sysstat-10.1.5-17.el7.x86_64 2/2
已安裝:
sysstat.x86_64 0:10.1.5-17.el7
作為依賴被安裝:
lm_sensors-libs.x86_64 0:3.4.0-6.20160601gitf9185e5.el7
完畢!表明已經安裝成功
4. `pidstat`命令語法
pidstat使用語法
[root@zcwyou ~]# pidstat options interval count
即pidstat 選項 間隔 數字
試試執行以下命令:
[root@zcwyou ~]# pidstat
輸出結果如下:
linux 3.10.0-957.12.2.el7.x86_64 (centos7.linuxrumen.com) 2023年07月09日 x86_64(2 cpu)
08時13分30秒 uid pid %usr %system %guest %cpu cpu command
08時13分30秒 0 1 0.04 0.68 0.00 0.72 1 systemd
08時13分30秒 0 2 0.00 0.00 0.00 0.00 1 kthreadd
08時13分30秒 0 3 0.00 0.04 0.00 0.04 0 ksoftirqd/0
08時13分30秒 0 7 0.00 0.01 0.00 0.01 0 migration/0
08時13分30秒 0 9 0.00 0.24 0.00 0.24 1 rcu_sched
08時13分30秒 0 13 0.00 0.00 0.00 0.00 1 migration/1
08時13分30秒 0 14 0.00 0.02 0.00 0.02 1 ksoftirqd/1
08時13分30秒 0 18 0.00 0.00 0.00 0.00 0 kdevtmpfs
08時13分30秒 0 30 0.00 0.01 0.00 0.01 0 kworker/0:1
08時13分30秒 0 37 0.00 0.00 0.00 0.00 1 khugepaged
08時13分30秒 0 47 0.00 0.06 0.00 0.06 1 kworker/u256:1
08時13分30秒 0 50 0.00 0.15 0.00 0.15 1 kworker/1:1
08時13分30秒 0 52 0.00 0.15 0.00 0.15 0 kworker/0:2
使用pidstat檢視程序狀態
5. 使用`pidstat`檢視任意程序的i/o狀態
語法:核心版本2.6.20或以上版本才支援
pidstat -d -p 程序號
pidstat -d -p 程序號 2 10
pidstat -d -p 程序號 1 50
檢視某程序的pid狀態,6963為程序號
[root@zcwyou ~]# pidstat -d -p 6963
linux 3.10.0-957.12.2.el7.x86_64 (centos7.linuxrumen.com) 2023年07月09日x86_64 (2 cpu)
08時21分26秒 uid pid kb_rd/s kb_wr/s kb_ccwr/s command
08時21分26秒 0 6963 1.91 0.00 0.00 sshd
輸出結果解釋:
pid – 正在監視的任務的程序標識號。.
kb_rd/s – 每秒從磁碟讀取任務所產生的位元組數,單位為kbyte。
kb_wr/s – 任務產生每秒寫入磁碟的位元組數,單位為kbyte。
kb_ccwr/s – 寫入磁碟的任務已取消的千位元組數。當任務截斷某些irty pagecache時,可能會發生這種情況。在這種情況下,將會發生一些已經考慮了另乙個任務的io。
command – 程序執行的命令.
6. 找出前5個頁面錯誤的程序統計資訊
以下命令將以兩秒的間隔向您顯示系統中所有任務的子程序的五個頁面錯誤統計報告:
[root@zcwyou ~]# pidstat -t child -r 2 5
linux 3.10.0-957.12.2.el7.x86_64 (centos7.linuxrumen.com) 2023年07月09日x86_64 (2 cpu)
08時26分48秒 uid pid minflt-nr majflt-nr command
08時26分50秒 0 7575 228 0 pidstat
08時26分50秒 uid pid minflt-nr majflt-nr command
08時26分52秒 0 7575 233 0 pidstat
找出前5個頁面錯誤的程序統計資訊
輸出結果解釋:
pid – 程序號.
minflt-nr – 任務及其子任務所產生的次要故障總數,並在該時間間隔內收集.
majflt-nr – 任務及其所有子項發生的主要故障總數,並在該時間間隔內收集.
7. 檢視cpu利用率
執行以下命令:
[root@zcwyou ~]# pidstat -t child -u 2 2
linux 3.10.0-957.12.2.el7.x86_64 (centos7.linuxrumen.com) 2023年07月09日 x86_64(2 cpu)
08時30分28秒 uid pid usr-ms system-ms guest-ms command
08時30分30秒 0 6931 10 0 0 tuned
08時30分30秒 0 7583 0 20 0 pidstat
08時30分30秒 uid pid usr-ms system-ms guest-ms command
08時30分32秒 0 50 0 10 0 kworker/1:1
08時30分32秒 0 7583 10 10 0 pidstat
輸出結果解釋:
報告任務及其所有子項的全域性統計資訊時,將顯示以下值:
usr-ms:任務及其所有子項在使用者級別(應用程式)執行時所花費的總毫秒數,具有或不具有優先順序,並在時間間隔內收集。請注意,此字段不包括執行虛擬處理器所花費的時間。
system-ms:在系統級別(核心)執行時,任務及其所有子節點在此時間間隔內收集的總毫秒數
guest-ms:任務及其所有子節點在虛擬機器(執行虛擬處理器)中花費的總毫秒數。
Linux 執行程序實時監控pidstat命令詳解
pidstat主要用於監控全部或指定程序占用系統資源的情況,如cpu,記憶體 裝置io 任務切換 執行緒等。pidstat首次執行時顯示自系統啟動開始的各項統計資訊,之後執行pidstat將顯示自上次執行該命令以後的統計資訊。使用者可以通過指定統計的次數和時間來獲得所需的統計資訊。安裝 yum in...
Linux 執行程序實時監控pidstat命令詳解
pidstat主要用於監控全部或指定程序占用系統資源的情況,如cpu,記憶體 裝置io 任務切換 執行緒等。pidstat首次執行時顯示自系統啟動開始的各項統計資訊,之後執行pidstat將顯示自上次執行該命令以後的統計資訊。使用者可以通過指定統計的次數和時間來獲得所需的統計資訊。預設引數 執行pi...
Linux 執行程序實時監控pidstat命令詳解
pidstat主要用於監控全部或指定程序占用系統資源的情況,如cpu,記憶體 裝置io 任務切換 執行緒等。pidstat首次執行時顯示自系統啟動開始的各項統計資訊,之後執行pidstat將顯示自上次執行該命令以後的統計資訊。使用者可以通過指定統計的次數和時間來獲得所需的統計資訊。預設引數 執行pi...