Linux命令之ps命令
所謂的程序,通俗的說,就是當前正在執行的一個程式。
在Linux系統中,ps(process status),常常用來列出系統中當前執行的程序,類似於windows的工作管理員。要對程序進行檢測和控制,首先必須要了解當前程序的情況,也就是需要檢視當前程序,而ps命令就是最基本同時也是非常強大的程序檢視命令。使用該命令可以確定有哪些程序正在執行和執行的狀態、程序是否結束、程序有沒有僵死、哪些程序佔用了過多的資源等等。總之大部分資訊都是可以通過執行該命令得到的。
ps工具標識程序的5種狀態碼:
- R 執行 runnable (on run queue)
- S 中斷 sleeping
- D 不可中斷 uninterruptible sleep (usually IO)
- T 停止 traced or stopped
- Z 僵死 a defunct (”zombie”) process
ps 使用
用法:ps [ 引數 ]
ps命令有很多引數,具體如下:
-
- -A 顯示所有程序(等價於-e)(utility)
- -a 顯示一個終端的所有程序,除了會話引線
- -N 忽略選擇。
- -d 顯示所有程序,但省略所有的會話引線(utility)
- -x 顯示沒有控制終端的程序,同時顯示各個命令的具體路徑。dx不可合用。(utility)
- -p pid 程序使用cpu的時間
- -u uid or username 選擇有效的使用者id或者是使用者名稱
- -g gid or groupname 顯示組的所有程序。
- U username 顯示該使用者下的所有程序,且顯示各個命令的詳細路徑。如:ps U zhang;(utility)
- -f 全部列出,通常和其他選項聯用。如:ps -fa or ps -fx and so on.
- -l 長格式(有F,wchan,C 等欄位)
- -j 作業格式
- -o 使用者自定義格式。
- v 以虛擬儲存器格式顯示
- s 以訊號格式顯示
- -m 顯示所有的執行緒
- -H 顯示程序的層次(和其它的命令合用,如:ps -Ha)(utility)
- e 命令之後顯示環境(如:ps -d e; ps -a e)(utility)
- h 不顯示第一行
- --version 顯示版本資訊
- --help 顯示幫助資訊
下面給大家舉幾個在日常生活中使用較多的ps命令。
- -w 顯示加寬可以顯示較多的資訊
- -au 顯示較詳細的資訊
- -aux 顯示所有包含其他使用者的行程
-
au(x) 輸出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
- USER: 使用者名稱
- PID: 程序ID(Process ID)
- %CPU: 程序的 CPU 佔有率
- %MEM: 程序的記憶體佔用率
- VSZ: 程序所使用的虛擬記憶體的大小(Virtual Size)
- RSS: 程序使用的駐留集大小或者是實際記憶體的大小,Kbytes位元組(RSS 是常駐記憶體集(Resident Set Size),表示該程序分配的記憶體大小)
-
RSS 不包括進入交換分割槽的記憶體。
RSS 包括共享庫佔用的記憶體(只要共享庫在記憶體中)
RSS 包括所有分配的棧記憶體和堆記憶體。
- TTY: 與程序關聯的終端(minor device number of tty)
-
STAT: 該行程的狀態():
- D: 無法中斷的休眠狀態 (通常 IO 的程序)
- R: 正在執行中
- S: 靜止狀態
- T: 暫停執行
- Z: 不存在但暫時無法消除
- W: 沒有足夠的記憶體分頁可分配
- <: 高優先序的行程
- N: 低優先序的行程
- L: 有記憶體分頁分配並鎖在記憶體內 (實時系統或捱A I/O)
- START: 行程開始時間
- TIME: 程序使用的總cpu時間
- COMMAND:正在執行的命令列命令
1、ps -aux
最常用的方法是ps -aux(或者ps au),然後再利用一個管道符號導向到grep去查詢特定的程序,然後再對特定的程序進行操作。
如果想跟蹤cpu佔用率和記憶體佔用率, aux是個不錯的選擇
如果想跟蹤父程序和完整的啟動命令 ef是個好選擇
ps -ef|grep詳解(查詢指定程序):
ps命令將某個程序顯示出來,grep命令是查詢,中間的|是管道命令,是指ps命令與grep命令同時進行
ps命令是Linux下最常用的也是非常強大的程序檢視命令
grep是查詢,是一種強大的文字搜尋工具,它能使用正則表示式搜尋文字,並把匹配的行打印出來。
rep全稱是Global Regular Expression Print,表示全域性正則表示式版本,它的使用許可權是所有使用者。
以下這條命令是檢查java 程序是否存在:ps -ef |grep java
欄位含義如下:
UID PID PPID C STIME TTY TIMECMD
zzw14124 13991 0 00:38 pts/0 00:00:00 grep --color=auto dae
UID :使用者ID(User ID)
PID :程序ID(Process ID)
PPID :父程序的程序ID(Parent Process id)
(說明:在 linux 中,使用 ps 列印程序及執行緒資訊時, 實際上 PID 表示執行緒資訊,而 PPID 表示該執行緒所屬的程序資訊。)
C :CPU使用的資源百分比(CPU使用者計算執行優先順序的因子,數值越大CPU密集運算執行優先順序越低)
STIME :啟動時間
TTY :與程序關聯的終端(tty)(完整的終端名稱)
TIME:程序使用的總cpu時間
CMD :正在執行的命令列命令
ps -ef是用標準的格式顯示程序;
參考:
https://www.cnblogs.com/freinds/p/8074651.html
https://www.runoob.com/linux/linux-comm-ps.html
https://www.linuxidc.com/Linux/2020-02/162252.htm