天天看點

linux 檢視其他使用者啟動的程序

ps -a 

顯示其他使用者啟動的程序(a)

檢視系統中屬于自己的程序(x)

啟動這個程序的使用者和它啟動的時間(u)

以下轉自 http://blog.sina.com.cn/s/blog_64492fe10100qibp.html

轉載  ps aux 中STAT 解釋 收藏

運作 ps aux 的到如下資訊:

   ps aux

USER    PID   %CPU %MEM VSZ   RSS TTY    STAT   START TIME COMMAND

smmsp 3521   0.0    0.7     6556 1616     ?        Ss      20:40 0:00 sendmail: Queue [email protected]:00:00 f

root    3532    0.0       0.2     2428    452     ?        Ss      20:40 0:00 gpm -m /dev/input/mice -t imps2

htt        3563    0.0       0.0    2956    196     ?        Ss       20:41 0:00 /usr/sbin/htt -retryonerror 0

htt        3564    0.0       1.7   29460 3704     ?        Sl        20:41 0:00 htt_server -nodaemon

root      3574    0.0       0.4     5236 992     ?        Ss       20:41 0:00 crond

xfs        3617    0.0       1.3   13572 2804     ?        Ss       20:41 0:00 xfs -droppriv -daemon

root       3627   0.0       0.2     3448    552     ?        SNs     20:41 0:00 anacron -s

root      3636    0.0       0.1     2304    420     ?        Ss       20:41 0:00 /usr/sbin/atd

dbus    3655    0.0       0.5   13840 1084     ?        Ssl       20:41 0:00 dbus-daemon-1 --system

....................................

stat 中的參數意義如下:

   D 不可中斷 Uninterruptible(usually IO)

   R 正在運作,或在隊列中的程序

   S 處于休眠狀态

   T 停止或被追蹤

   Z 僵屍程序

   W 進入記憶體交換(從核心2.6開始無效)

   X   死掉的程序

    < 高優先級

    n   低優先級

    s   包含子程序

    +   位于背景的程序組

======================================

ps指令

要對程序進行監測和控制,首先必須要了解目前程序的情況,也就是需要檢視目前程序,而ps指令就是最基本同時也是非常強大的程序檢視指令.使用該指令可以 确定有哪些程序正在運作和運作的狀态、程序是否結束、程序有沒有僵屍、哪些程序占用了過多的資源等等.總之大部分資訊都是可以通過執行該指令得到的.

ps指令最常用的還是用于監控背景程序的工作情況,因為背景程序是不和螢幕鍵盤這些标準輸入/輸出裝置進行通信的,是以如果需要檢測其情況,便可以使用ps指令了.

         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去查找特定的程序,然後再對特定的程序進行操作。

linux上程序有5種狀态:

1. 運作(正在運作或在運作隊列中等待)

2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信号)

3. 不可中斷(收到信号不喚醒和不可運作, 程序必須等待直到有中斷發生)

4. 僵死(程序已終止, 但程序描述符存在, 直到父程序調用wait4()系統調用後釋放)

5. 停止(程序收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号後停止運作運作)

ps工具辨別程序的5種狀态碼:

D 不可中斷 uninterruptible sleep (usually IO)

R 運作 runnable (on run queue)

S 中斷 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (”zombie”) process

注: 其它狀态還包括W(無駐留頁), <(高優先級程序), N(低優先級程序), L(記憶體鎖頁).

使用ps格式輸出來檢視程序狀态:

ps -eo user,stat..,cmd

user 使用者名

uid 使用者号

pid 程序号

ppid 父程序号

size 記憶體大小, Kbytes位元組.

vsize 總虛拟記憶體大小, bytes位元組(包含code+data+stack)

share 總共享頁數

nice 程序優先級(預設為0, 最大為-20)

priority(pri) 核心排程優先級

pmem 程序分享的實體記憶體數的百分比

trs 程式執行代碼駐留大小

rss 程序使用的總實體記憶體數, Kbytes位元組

time 程序執行起到現在總的CPU暫用時間

stat 程序狀态

cmd(args) 執行指令的簡單格式

例子:

檢視目前系統程序的uid,pid,stat,pri, 以uid号排序.

ps -eo pid,stat,pri,uid –sort uid

檢視目前系統程序的user,pid,stat,rss,args, 以rss排序.

ps -eo user,pid,stat,rss,args –sort rss

名稱:ps

使用權限:所有使用者

使用方式:ps [options] [--help]

說明:顯示瞬間行程 (process) 的動态

參數:

ps 的參數非常多, 在此僅列出幾個常用的參數并大略介紹含義

-A 列出所有的行程

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

-au 顯示較詳細的資訊

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

au(x) 輸出格式 :

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

USER: 行程擁有者

PID: pid

%CPU: 占用的 CPU 使用率

%MEM: 占用的記憶體使用率

VSZ: 占用的虛拟記憶體大小

RSS: 占用的記憶體大小

TTY: 終端的次要裝置号碼 (minor device number of tty)

STAT: 該行程的狀态:

D: 不可中斷的靜止

R: 正在執行中

S: 靜止狀态

T: 暫停執行

Z: 不存在但暫時無法消除

W: 沒有足夠的記憶體分頁可配置設定

<: 高優先序的行程

N: 低優先序的行程

L: 有記憶體分頁配置設定并鎖在記憶體内

START: 行程開始時間

TIME: 執行的時間

COMMAND:所執行的指令

範例:

ps

PID TTY TIME CMD

2791 ttyp0 00:00:00 tcsh

3092 ttyp0 00:00:00 ps

% ps -A

PID TTY TIME CMD

1 ? 00:00:03 init

2 ? 00:00:00 kflushd

3 ? 00:00:00 kpiod

4 ? 00:00:00 kswapd

5 ? 00:00:00 mdrecoveryd

.......

% ps -aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]

root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]

root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]

root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]

........

要對程序進行監測和控制,首先必須要了解目前程序的情況,也就是需要檢視目前程序,而 ps 指令就是最基本同時也是非常強大的程序檢視指令。使用該指令可以确定有哪些程序正在運作和運作的狀态、程序是否結束、程序有沒有僵死、哪些程序占用了過多 的資源等等。總之大部分資訊都是可以通過執行該指令得到的。

ps 為我們提供了程序的一次性的檢視,它所提供的檢視結果并不動态連續的;如果想對程序時間監控,應該用 top 工具。

kill 用于殺死程序。

1、ps 的參數說明

ps 提供了很多的選項參數,常用的有以下幾個:

l 長格式輸出;

u 按使用者名和啟動時間的順序來顯示程序;

j 用任務格式來顯示程序;

f 用樹形格式來顯示程序;

a 顯示所有使用者的所有程序(包括其它使用者);

x 顯示無控制終端的程序;

r 顯示運作中的程序;

ww 避免詳細參數被截斷;

我們常用的選項是組合是 aux 或 lax,還有參數 f 的應用。

2、ps aux 或 lax 輸出的解釋

USER 程序的屬主;

PID 程序的ID;

PPID 父程序;

%CPU 程序占用的CPU百分比;

%MEM 占用記憶體的百分比;

NI 程序的NICE值,數值大,表示較少占用CPU時間;

VSZ 程序虛拟大小;

RSS 駐留中頁的數量;

TTY 終端ID

STAT 程序狀态(有以下幾種)

D 無法中斷的休眠狀态(通常 IO 的程序);

R 正在運作可中在隊列中可過行的;

S 處于休眠狀态;

T 停止或被追蹤;

W 進入記憶體交換(從核心2.6開始無效);

X 死掉的程序(從來沒見過);

Z 僵屍程序;

< 優先級高的程序

N 優先級較低的程序

L 有些頁被鎖進記憶體;

s 程序的上司者(在它之下有子程序);

l 多程序的(使用 CLONE_THREAD, 類似 NPTL pthreads);

+ 位于背景的程序組;

WCHAN 正在等待的程序資源;

START 啟動程序的時間;

TIME 程序消耗CPU的時間;

COMMAND 指令的名稱和參數;

3、應用舉例

[[email protected] ~]# ps -aux |more

可以用 | 管道和 more 連接配接起來分頁檢視。

[[email protected] ~]# ps -aux > ps001.txt

[[email protected] ~]# more ps001.txt

這裡是把所有程序顯示出來,并輸出到ps001.txt檔案,然後再通過more 來分頁檢視。

4、kill 終止程序

有十幾種控制程序的方法,下面是一些常用的方法:

kill -STOP [pid]

發送SIGSTOP (17,19,23)停止一個程序,而并不消滅這個程序。

kill -CONT [pid]

發送SIGCONT (19,18,25)重新開始一個停止的程序。

kill -KILL [pid]

發送SIGKILL (9)強迫程序立即停止,并且不實施清理操作。

kill -9 -1

終止你擁有的全部程序。

SIGKILL 和 SIGSTOP 信号不能被捕捉、封鎖或者忽略,但是,其它的信号可以。是以這是你的終極武器。

繼續閱讀