Linux系統程序管理
-
•程序監控指令之ps -
•語法 -
•ps -aux解析 -
•程序狀態 -
•常用程序基礎狀態 -
•常用組合程序狀態 -
•殭屍狀態的程序 -
•孤兒程序 -
•程序監控指令之top、htop、iotop -
•top -
•htop -
•iotop
概念
在 Linux 系統中,程序是正在執行的程式的例項。理解程序的管理、檢視和控制對於系統管理員和開發者來說非常重要
程序的定義:
-
• 程序(Process)是程式在執行時的一個例項。它包含了程式的程式碼、資料、堆疊、環境變數等。 -
• 每個程序都有一個唯一的 程序 ID(PID),用於標識程序。 -
• 程序可以處於不同的狀態,如執行態、就緒態、等待態、殭屍態等。
程序監控指令之ps
ps
命令用於報告當前系統的程序狀態。可以搭配kill
指令隨時中斷、刪除不必要的程式。ps命令是最基本同時也是非常強大的程序檢視命令,使用該命令可以確定有哪些程序正在執行和執行的狀態、程序是否結束、程序有沒有僵死、哪些程序佔用了過多的資源等等,總之大部分資訊都是可以透過執行該命令得到的.語法
| | || --- | --- || | ps [選項] |
常用選項說明
-
• -a:顯示所有使用者的程序(不包括會話領導者和沒有控制終端的程序)。 -
• -u:顯示程序的使用者資訊。 -
• -x:顯示沒有控制終端的程序。 -
• -e:顯示所有程序。 -
• -f:顯示長格式資訊,包括父程序 ID、控制終端等。 -
• -l:顯示長格式資訊,類似於 -f,但更詳細。 -
• -o:自定義輸出格式,指定要顯示的欄位。 -
• -p:指定要顯示的程序 ID。 -
• -t:指定要顯示的終端。 -
• -U:指定要顯示的使用者。 -
• -G:指定要顯示的使用者組。
常用搭配
| | || --- | --- || | ps-ef || | ps-aux || | ps-le |
ps -aux
解析
| | || --- | --- || | root@master-01:~# ps -aux \| head -10 || | USER PID %CPU%MEM VSZ RSS TTY STAT START TIME COMMAND || | root 10.40.017085611472 ? Ss Feb17 350:48 /sbin/init nopti || | root 20.00.000 ? S Feb17 0:13 [kthreadd] || | root 30.00.000 ? I< Feb17 0:00 [rcu_gp] || | root 40.00.000 ? I< Feb17 0:00 [rcu_par_gp] || | root 60.00.000 ? I< Feb17 0:00 [kworker/0:0H-kblockd] || | root 80.00.000 ? I< Feb17 0:00 [mm_percpu_wq] || | root 90.00.000 ? S Feb17 2:29 [ksoftirqd/0] || | root 100.00.000 ? I Feb17 53:47 [rcu_sched] || | root 110.00.000 ? S Feb17 0:08 [migration/0] || | || | #解析 || | USER:表示使用者 || | PID:表示程序號 || | %CPU:表示cpu佔用率 || | %MEM:表示記憶體佔用率 || | VSZ:程序佔用的虛擬記憶體,單位kb || | RSS:程序佔用的常駐記憶體,單位kb || | TTY:?表示程序沒有控制終端 || | STAT:程序狀態 || | START:程序啟動時間 || | TIME:程序累計運行了多長時間 || | COMMAND:程序執行的命令 |
程序狀態
常用程序基礎狀態
-
• 執行態(Running):狀態字元 R
。程序正在CPU上執行,或者在執行佇列中等待執行 -
• 睡眠態(Sleeping):狀態字元 S
。程序正在等待某些事件(如 I/O 操作、訊號等)完成。程序處於睡眠態時,不會佔用 CPU 時間。 -
• 不可中斷睡眠態(Disk Sleep):狀態字元 D
。程序正在等待某些不可中斷的 I/O 操作完成,通常與磁碟 I/O 操作有關。處於這種狀態的程序不能被訊號喚醒,也不能被 kill 命令終止。 -
• 停止態(Stopped):狀態字元 T
。程序被訊號停止,通常是因為收到了 SIGSTOP 或 SIGTSTP 訊號。停止的程序不會佔用 CPU 時間,但可以被訊號喚醒。 -
• 殭屍程序(Zombie):狀態字元 Z
。程序已經完成,但其父程序尚未讀取其狀態資訊。殭屍程序不能被終止,只能等待父程序讀取狀態資訊後自動消失。殭屍程序會佔用系統資源,直到父程序讀取其狀態資訊。 -
• 死態(Dead):狀態字元 X
。程序已經死亡,但尚未被父程序回收。這種狀態的程序通常不會出現在 ps 的輸出中。
常用組合程序狀態
-
• R+、S+、D+:帶+號的程序,表示程序前臺執行 -
• Ss、xxxs:帶小s的程序,程序是父程序 -
• R<、S<:帶小於號<的程序,程序是高優先順序程序,優先被cpu排程 -
• RN、SN:帶N的程序,程序是低優先順序程序 -
• Sl:帶l的執行緒,程序是多執行緒狀態
殭屍狀態的程序
這裡著重講一下殭屍狀態的程序,殭屍狀態的程序因為一些原因脫離系統控制,但是程序又沒有正常退出(結束),程序執行中但是不受控制,佔用系統的cpu、記憶體資源。
殭屍狀態排查及結束流程
-
1. 使用ps命令查詢殭屍程序
| | || --- | --- || | ps -ef \| grep'Z' || | # 或者使用更詳細的命令來定位殭屍程序及其父程序,在輸出中,STAT 列為 Z 的程序即為殭屍程序 || | ps -A -ostat,ppid,pid,cmd \| grep -e '^\[Zz\]' |
-
2. 定位殭屍程序的父程序
| | || --- | --- || | # 下面命令輸出的是殭屍程序的父程序PID || | ps-o ppid= -p <殭屍程序PID> |
-
3. 終止父程序
| | || --- | --- || | # 父程序終止後,殭屍程序會被 init 程序(PID 1)接管並自動清理 || | kill -9 父程序pid |
孤兒程序
對系統影響不大。某個子程序的父程序因為特殊原因掛了,但是子程序還在,子程序就是孤兒程序。
程序監控指令之top
、htop
、iotop
top
top命令可以動態的持續監聽程序的執行狀態,與此同時,該命令還提供了一個互動介面,使用者可以根據需要,人性化的定製自己的輸出,進而更清楚的瞭解程序的執行狀態
語法
| | || --- | --- || | top[選項] |
常用選項說明
-
• -d:指定top命令每隔幾秒更新,預設是3秒 -
• -b:使用批處理模式,一般和 -n
選項結合使用,用於把top命令重定向到檔案中 -
• -p:僅檢視指定ID的程序 -
• -u:只監聽某個使用者的程序
示例:
||||---|---|||root@master-01:~#top|||top-17:01:55up60days,6:30,1user,load average:2.55,1.74,1.88|||Tasks:473total,1running,472sleeping,0stopped,0zombie|||%Cpu(s):0.2us,0.4sy,0.0ni,99.4id,0.0wa,0.0hi,0.0si,0.0st|||MiB Mem :64050.7total,29284.5free,6963.5 used,27802.7buff/cache|||MiB Swap:0.0total,0.0free,0.0used.55773.2availMem||||||PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND|||1280024root2009440 4136 3056 R6.20.00:00.01top|||1root200170856114726800 S0.00.0350:51.46systemd|||2root200000S0.00.00:13.76kthreadd|||3root0-20000I0.00.00:00.00rcu_gp|||4root0-20000I0.00.00:00.01rcu_par_gp|||6root0-20000I0.00.00:00.00kworker/0:0H-kblockd|||8root0-20000I0.00.00:00.00mm_percpu_wq|||9root200000S0.00.02:29.50ksoftirqd/0|||10root200000I0.00.053:48.12rcu_sched|
說明圖:

htop
htop 是一個互動式的程序檢視器,類似於 top,但提供了更豐富的功能和更友好的使用者介面。它支援顏色顯示、樹狀結構、程序排序等功能,還可以直接在介面中操作程序(如殺死程序)。
安裝
| ||| --- | --- || | 在大多數 Linux 發行版中,htop 可以透過包管理器安裝: ||| bash || | 複製 ||| # Ubuntu/Debian || | sudo apt-get install htop ||| || |# CentOS/RHEL || | sudo yum install htop ||| || |# Fedora || | sudo dnf install htop |
執行htop
後,你會看到類似以下的介面:

常用快捷鍵
-
• F1:幫助 -
• F2:設定 -
• F3:搜尋程序 -
• F4:過濾程序 -
• F5:樹狀檢視 -
• F6:排序欄位 -
• F9:殺死程序 -
• F10:退出
iotop
iotop
是一個用於監控磁碟 I/O 活動的工具,可以幫助你瞭解哪些程序正在佔用磁碟 I/O 資源。它提供了即時的 I/O 使用情況,包括讀寫速度、程序資訊等。安裝
| ||| --- | --- || |# Ubuntu/Debian || | sudo apt-get install iotop ||| || |# CentOS/RHEL || | sudo yum install iotop ||| || |# Fedora || | sudo dnf install iotop |
執行iotop
後,你會看到類似以下的介面:

連結:https://www.cnblogs.com/huangSir-devops/p/18834292
(版權歸原作者所有,侵刪)
文末福利
就目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。
為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套高階運維工程師必備技能資料包,內容有多詳實豐富看下圖!
共有 20 個模組





······



以上所有資料獲取請掃碼
備註:最新運維資料

100%免費領取
(後臺不再回復,掃碼一鍵領取)