1. 程式人生 > 其它 >Linux命令之ps命令

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