1. 程式人生 > >Linux系列命令——ps,kill詳解

Linux系列命令——ps,kill詳解

(一)ps命令

(1)功能:

列出系統中當前執行的那些程序。ps命令列出的是當前那些程序的快照,就是執行ps命令的那個時刻的那些程序,如果想要動態的顯示程序資訊,就可以使用top命令。

linux上程序有5種狀態:

  • 執行(正在執行或在執行佇列中等待)
  • 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到訊號)
  • 不可中斷(收到訊號不喚醒和不可執行, 程序必須等待直到有中斷髮生)
  • 僵死(程序已終止, 但程序描述符存在, 直到父程序呼叫wait4()系統呼叫後釋放)
  • 停止(程序收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU訊號後停止執行執行)

ps工具標識程序的5種狀態碼:

  • R 執行 runnable (on run queue)
  • S 中斷 sleeping
  • D 不可中斷 uninterruptible sleep (usually IO)
  • Z 僵死 a defunct (”zombie”) process
  • T 停止 traced or stopped

(2)語法:   ps  [options]

常見引數:

  • -A 列出所有的行程

  • -w 顯示加寬可以顯示較多的資訊

  • -au 顯示較詳細的資訊

  • -aux 顯示所有包含其他使用者的行程

(3)例子:

例1:顯示所有程序資訊


例2:顯示指定使用者資訊

例3: ps 與grep 常用組合用法,查詢特定程序

例4:將目前屬於您自己這次登入的 PID 與相關資訊列示出來。

# F 代表這個程式的旗標 (flag), 4 代表使用者為 superuser;
# S 代表這個程式的狀態 (STAT);
#UID 代表執行者身份
# PID 程序的ID號!底下的 PPID 則父程序的ID;
# C CPU 使用的資源百分比
# PRI指程序的執行優先權(Priority的簡寫),其值越小越早被執行;
# NI 這個程序的nice值,其表示程序可被執行的優先順序的修正數值。
# ADDR 這個是核心函式,指出該程式在記憶體的那個部分。如果是個執行
# 的程式,一般就是『 - 』
# SZ 使用掉的記憶體大小;
# WCHAN 目前這個程式是否正在運作當中,若為 - 表示正在運作;
# TTY 登入者的終端機位置囉;
# TIME 使用掉的 CPU 時間。
# CMD 所下達的指令名稱


例5:列出目前所有的正在記憶體當中的程式

• USER:該程序屬於那個使用者賬號的?
• PID :該程序的程序ID號。
• %CPU:該程序使用掉的 CPU 資源百分比;
• %MEM:該程序所佔用的實體記憶體百分比;
• VSZ :該程序使用掉的虛擬記憶體量 (Kbytes)
• RSS :該程序佔用的固定的記憶體量 (Kbytes)
• TTY :該程序是在那個終端機上面運作,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程式,若為 pts/0 等等的,則表示為由網路連線進主機的程式。
• STAT:該程式目前的狀態,主要的狀態有:
• START:該程序被觸發啟動的時間;
• TIME :該程序實際使用 CPU 運作的時間。
• COMMAND:所執行的指令

 

具體命令解釋如下:
  1)ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。
  2)ps -A 顯示所有程式。
  3)ps c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,引數或常駐服務的標示。
  4)ps -e 此引數的效果和指定"A"引數相同。
  5)ps e 列出程式時,顯示每個程式所使用的環境變數。
  6)ps f 用ASCII字元顯示樹狀結構,表達程式間的相互關係。
  7)ps -H 顯示樹狀結構,表示程式間的相互關係。
  8)ps -N 顯示所有的程式,除了執行ps指令終端機下的程式之外。
  9)ps s 採用程式訊號的格式顯示程式狀況。
  10)ps S 列出程式時,包括已中斷的子程式資料。
  11)ps -t<終端機編號>    
  指定終端機編號,並列出屬於該終端機的程式的狀況。
  12)ps u
  以使用者為主的格式來顯示程式狀況。
  13)ps x
  顯示所有程式,不以終端機來區分。
  最常用的方法是ps -aux,然後再利用一個管道符號導向到grep去查詢特定的程序,然後再對特定的程序進行操作。

(二)kill命令:

(1)功能:指定的資訊送至程式,用來顯示資訊和殺死程序。

(2)語法:   kill   [引數]   程序PID

(3)例子:

例1:顯示訊號名稱列表。kill -l 

例2:殺死某一個叫程序 。kill 1626160