整理自網絡
平時linux程序檢視還是比較常用的,于是我研究了一下linux ps指令的使用方式,在這裡拿出來和大家分享一下,希望對大家有用。
1. ps簡介
前面介紹的兩個指令(who、w指令)都是用于檢視目前系統使用者的情況,下面就來看看程序的情況,這也是本章的主題。要對程序進行監測和控制,首先必須要了解目前程序的情況,也就是需要檢視目前程序,而ps指令就是最基本同時也是非常強大的linux程序檢視指令。使用該指令可以确定有哪些程序正在運作和運作的狀态、程序是否結束、程序有沒有僵死、哪些程序占用了過多的資源等等。總之大部分資訊都是可以通過執行該指令得到的。
2. ps指令及其參數
ps指令最常用的還是用于監控背景程序的工作情況,因為背景程序是不和螢幕鍵盤這些标準輸入/輸出裝置進行通信的,是以如果需要檢測其情況,便可以使用ps指令了。
該指令文法格式如下:ps [選項]
下面對指令選項進行說明:
◆-e 顯示所有程序。
◆-f 全格式。
◆-h 不顯示标題。
◆-l 長格式。
◆-w 寬輸出。
◆a 顯示終端上的所有程序,包括其他使用者的程序。
◆r 隻顯示正在運作的程序。
◆x 顯示沒有控制終端的程序。
O[+|-] k1 [,[+|-] k2 [,…]] 根據SHORT KEYS、k1、k2中快捷鍵指定的多級排序順序顯示程序清單。對于ps的不同格式都存在着預設的順序指定。這些預設順序可以被使用者的指定所覆寫。其中 “+”字元是可選的,“-”字元是倒轉指定鍵的方向。
pids 隻列出指定程序的情況。各程序ID之間使用逗号分隔。該程序清單必須在指令行參數的最後一個選項後面緊接着給出,中間不能插入空格。比如:ps -f1,4,5。
以下介紹長指令行選項,這些選項都使用“--”開頭:
◆--sort X[+|-] key [,[+|-] key [,…]] 從SORT KEYS段中選一個多字母鍵。“+”字元是可選的,因為預設的方向就是按數字升序或者詞典渌承颉1熱纾?ps -jax -sort=uid,-ppid,+pid。
◆--help 顯示幫助資訊。
◆--version 顯示該指令的版本資訊。
在前面的選項說明中提到了排序鍵,接下來對排序鍵作進一步說明。需要注意的是排序中使用的值是ps使用的内部值,并非僅用于某些輸出格式的僞值。
排序鍵清單
短格式
長格式
說 明
◆c-cmd可執行的簡單名稱
◆C-cmdline完整指令行
◆f-flags長模式标志
◆g-pgrp程序的組ID
◆G-tpgid控制tty程序組ID
◆j-cutime累計使用者時間
◆J-cstime累計系統時間
◆k-utime使用者時間
◆K-stime系統時間
◆m-min_flt次要頁錯誤的數量
◆M-maj_flt主要頁錯誤的數量
◆n-cmin_flt累計次要頁錯誤
◆N-cmaj_flt累計主要頁錯誤
◆o-session對話ID
◆p-pid程序ID
◆P-ppid父程序ID
◆r-rss駐留大小
◆R-resident駐留頁
◆s-size記憶體大小(千位元組)
◆S-share共享頁的數量
◆t-ttytty次要裝置号
◆T-start_time程序啟動的時間
◆U-uid-UID
◆u-user使用者名
◆v-vsize總的虛拟記憶體數量(位元組)
◆y-priority核心排程優先級
3. 常用ps指令參數
前面兩節介紹的參數可能讓讀者覺得有些可怕,實際上這是一個非常容易使用的指令,一般的使用者隻需掌握一些最常用的指令參數就可以了。 最常用的三個參數是u、a、x,下面将通過例子來說明其具體用法。
以root身份登入系統,檢視目前程序狀況
$ ps
PID TTY TIME COMMAND
5800 ttyp0 00:00:00 bash
5835 ttyp0 00:00:00 ps
可以看到,顯示的項目共分為四項,依次為PID(程序ID)、TTY(終端名稱)、TIME(程序執行時間)、COMMAND(該程序的指令行輸入)。
使用u選項來檢視程序所有者及其他一些詳細資訊,如下所示:
$ ps u
USER PID %CPU %MEM USZ RSS TTY STAT START TIME COMMAND
test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash
test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 ps u
在bash程序前面有條橫線,意味着該程序便是使用者的登入shell,是以對于一個登入使用者來說帶短橫線的程序隻有一個。還可以看到%CPU、%MEM兩個選項,前者指該程序占用的CPU時間和總時間的百分比;後者指該程序占用的記憶體和總記憶體的百分比。
在這種情況下看到了所有控制終端的程序;但是對于其他那些沒有控制終端的程序還是沒有觀察到,是以這時就需要使用x選項。使用x選項可以觀察到所有的程序情況。
下面是使用x選項的例子:
$ ps x
PID TTY STAT TIME COMMAND
5800 ttyp0 S 0:00 -bash
5813 ttyp1 S 0:00 -bash
5921 ttyp0 S 0:00 man ps
5922 ttyp0 S 0:00 sh -c /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz | /
5923 ttyp0 S 0:00 /usr/bin/gunzip -c /var/catman/cat1/ps.1.gz
5924 ttyp0 S 0:00 /usr/bin/less -is
5941 ttyp1 R 0:00 ps x
可以發現突然一下子就多出了那麼多的程序。這些多出來的程序就是沒有控制終端的程序。
前面看到的所有程序都是test使用者自己的。其實還有許多其他使用者在使用着系統,自然也就對應着其他的很多程序。如果想對這些程序有所了解,可以使用a選項來檢視目前系統所有使用者的所有程序。經常使用的是aux組合選項,這可以顯示最詳細的程序情況。
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1136 64 ? S Nov25 0:02 init [3]
root 2 0.0 0.0 0 0 ? SW Nov25 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Nov25 0:03 [kupdate]
root 4 0.0 0.0 0 0 ? SW Nov25 0:00 [kpiod]
root 5 0.0 0.0 0 0 ? SW Nov25 0:00 [kswapd]
root 163 0.0 0.1 1628 332 ? S Nov25 0:02 sshd
root 173 0.0 0.0 1324 200 ? S Nov25 0:00 syslogd
root 181 0.0 0.0 1420 0 ? SW Nov25 0:00 [klogd]
daemon 191 0.0 0.1 1160 312 ? S Nov25 0:00 /usr/sbin/atd
root 201 0.0 0.1 1348 492 ? S Nov25 0:00 crond
root 212 0.0 0.0 1292 68 ? S Nov25 0:00 inetd
……
在顯示的最前面是其他使用者的程序情況,可以看到有root、daemon等使用者以及他們所啟動的程序。 在上面的例子中,介紹了ps指令最常見的一些選項和選項組合,使用者可以根據自己的需要選用。
以上給大家講解了linux程序檢視中的ps指令的使用,接下來将會講解檢視系統使用者情況的指令who。