以下內容由伊甸園網友liuqing9906提供
Linux教程-進程查看
linux是個多用戶系統,有時候也要了解其他用戶現在在幹什麼,所以在本節中還將接觸多用戶方面的
內容.同時Linux是一個多進程系統,經常需要對這些進程進行一些調配和管理;而要進行管理,
就要知
道現在的進程情況:究竟有哪些進程?進程情況如何?等等.所以需要進程查看方面的工作.
who命令
該命令主要用於查看當前在線上的用戶情況.這個命令非常有用.如果用戶想和其他用戶建立即時
通訊,比如使用talk命令,那麼
要確定的就是該用戶確實在線上,不然talk進程就無法建立起來.
又如,系統管理員希望監視每個登錄的用戶此時此刻的所作所為,也要使用who命令.
who命令的常用語法格式如下:
who [imqsuwHT] [--count] [--idle] [--heading] [--help] [--message] [--mesg] [--version]
[--writable] [file] [am i]
所有的選項都是可選的,也就是說可以單獨使用who命令.不使用任何選項時,who命令將顯示以下三項內容:
login name:登錄用戶名;
terminal line:使用終端設備;
login time:登錄到系統的時間.
如果給出的是兩個非選項參數,那麼who命令將只顯示運行who程序的用戶名、登錄終端和登錄時間.
通常這兩個參數是「am i」,即該命令格式為:「who am i」.
下面對who命令的常用參數進行說明.
-m 和「who am i」的作用一樣,顯示運行該程序的用戶名.
-q,--count 只顯示用戶的登錄帳號和登錄用戶的數量,該選項優先順序高於其他任何選項.
-s 忽略.主要是用於和其他版本的who命令兼容.
-i,-u,--idle 在登錄時間後面顯示該用戶
一次對系統進行操作至今的時間,也就是常說的
「發獃」時間.其中「.」符號代表該用戶在前1秒仍然處於活動狀態;「old」則表示該用戶空閑已經
超過了24小時.
-H,--heading 顯示一行列標題.常用的標題如表4-2所示.
表4-2 who命令輸出常用標題
標 題
說 明
USER
用戶登錄帳號
LINE
用戶登錄使用終端
LOGIN-TIME
用戶登錄時間
IDLE
用戶空閑 洌次唇脅僮韉氖奔?
PID
用戶登錄shell的進程ID
FROM
用戶網路地址
-w,-T--mesg,--message,--writable 和-s選項一樣,在登錄帳號後面顯示一個字元來表示用戶
的信息狀態:
:允許寫信息;
-:不允許寫信息;
?:不能找到終端設備.
--help 在標準輸出上顯示幫助信息.
--version 在標準輸出上顯示版本信息.
下面介紹who命令的一些基本用法.
如果需要查看在系統上究竟有哪些用戶,可以直接使用who命令.
[例17] 查看登錄到系統的用戶情況
$ who
root tty1 Mar 17 13:49
foxy tty2 Mar 17 13:49
root tty3 Mar 17 13:49
bbs ttyp0 Mar 17 13:49 (river.net)
可以看到,現在系統一共有四個用戶.
一般來說,這樣就可以了解登錄用戶的大致情況了.但有時上面的顯示不是那麼直觀,
沒有標題
說明,不容易看懂,這時就需要使用-H選項了.
[例18] 查看登錄用戶的詳細情況,鍵入:
$ who -uH
顯示如下:
USER LINE LOGIN-TIME IDLE FROM
root tty1 Mar 17 13:49 .
foxy tty2 Mar 17 13:49 00:01
root tty3 Mar 17 13:49 00:01
bbs ttyp0 Mar 17 13:49 00:01 (river.net)
這樣一目了然.其中-u選項指定顯示用戶空閑時間,所以可以看到多了一項IDLE.第一個root用戶的IDLE項
是一個「.」,這就說明該用戶在前1秒仍然是活動的,而其他用戶後面都有一個時間,稱為空閑時間.
來看看使用「who am i」格式命令的結果:
233.river.net!root tty1 Mar 17 13:49
可見只顯示出了運行該who命令的用戶情況,當然這時候不存在空閑時間.
who命令應用起來非常簡單,可以比較準確地掌握用戶的情況,所以使用非常廣泛.
w命令
該命令也用於顯示登錄到系統的用戶情況,但是與who不同的是,w命令功能更加強大,它不但可以顯示
有誰登錄到系統,還可以顯示出這些用戶當前正在進行的工作,並且統計數據相對who命令來說更加詳細和科
學,可以認為w命令就是who命令的一個增強版.
w命令的顯示項目按以下順序排列:當前時間,系統啟動到現在的時間,登錄用戶的數目,系統在最
近1秒、5秒和15秒的平均負載.然後是每個用戶的各項數據,項目顯示順序如下:登錄帳號、終端名稱、遠
程主機名、登錄時間、空閑時間、JCPU、PCPU、當前正在運行進程的命令行.
其中JCPU時間指的是和該終端(tty)連接的所有進程佔用的時間.這個時間裡並不包括過去的後台作業
時間,但卻包括當前正在運行的後台作業所佔用的時間.而PCPU時間則是指當前進程(即在WHAT項中顯示的進程)
所佔用的時間.下面介紹該命令的具體用法和參數.
語法格式如下:
w -[husfV] [user]
下面對參數進行說明:
-h 不顯示標題.
-u 當列出當前進程和CPU時間時忽略用戶名.這主要是用於執行su命令后的情況.
-s 使用短模式.不顯示登錄時間、JCPU和PCPU時間.
-f 切換顯示FROM項,也就是遠程主機名項.默認值是不顯示遠程主機名,當然系統管理員可以對源文件
作一些修改是的顯示該項成為默認值.
-V 顯示版本信息.
User 只顯示指定用戶的相關情況.
[例19] 顯示當前登錄到系統的用戶的詳細情況
$ w
2:50pm up 2 min, 4 users, load average:0.22,0.16,0.06
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 2:49pm 0:00s 0.56s 0.10s w
foxy tty2 2:49pm 1:09 0.42s 0.42s bash
root tty3 2:49pm 46.00s 0.67s 0.25s telnet bbs3
bbs ttyp0 river.net 2:49pm 45.00s 0.49s 0.49s bbs h river.net
ps命令
1. ps簡介
前面介紹的兩個命令都是用於查看當前系統用戶的情況,下面就來看看進程的情況,這也是本章的主題.
要對進程進行監測和控制,
必須要了解當前進程的情況,也就是需要查看當前進程,而ps命令就是最基本
同時也是非常強大的進程查看命令.使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、
進程有沒有僵死、哪些進程佔用了過多的資源等等.總之大部分信息都是可以通過執行該命令得到的.
2. ps命令及其參數
ps命令最常用的還是用於監控後台進程的工作情況,
後台進程是不和屏幕鍵盤這些標準輸入/輸出設
備進行通信的,所以如果需要檢測其情況,便可以使用ps命令了.
該命令語法格式如下:
ps [選項]
下面對命令選項進行說明:
-e 顯示所有進程.
-f 全格式.
-h 不顯示標題.
-l 長格式.
-w 寬輸出.
a 顯示終端上的所有進程,包括其他用戶的進程.
r 只顯示正在運行的進程.
x 顯示沒有控制終端的進程.
O[ |-] k1 [,[ |-] k2 [,…]] 根據SHORT KEYS、k1、k2中快捷鍵指定的多級排序順序顯示進程列表.
對於ps的不同格式都存在著默認的順序指定.這些默認順序可以被用戶的指定所覆蓋.其中「 」字元是可選
的,「-」字元是倒轉指定鍵的方向.
pids 只列出付ń痰那榭觥8鶻蘄D之間使用逗號分隔.該進程列表必須在命令行參數的
一個選項
後面緊接著給出,中間不能插入空格.比如:ps -f1,4,5.
以下介紹長命令行選項,這些選項都使用「--」開頭:
--sort X[ |-] key [,[ |-] key [,…]] 從SORT KEYS段中選一個多字母鍵.「 」字元是可選的,因
為默認的方向就是按數字升序或者詞典順序.比如: ps -jax -sort=uid,-ppid, pid.
--help 顯示幫助信息.
--version 顯示該命令的版本信息.
在前面的選項說明中提到了排序鍵,接下來對排序鍵作進一步說明.需要注意的是排序中使用的值是ps使
用的內部值,並非僅用於某些輸出格式的偽值.排序鍵列表見表4-3.
表4-3 排序鍵列表
短格式
長格式
說 明
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
tty
tty次要設備號
T
start_time
進程啟動的時間
U
uid
UID
u
user
用戶名
v
vsize
總的虛擬內存數量(位元組)
y
priority
內核調度優先順序
3. 常用ps命令參數
前面兩節介紹的參數可能讓讀者覺得有些可怕,實際上這是一個非常容易使用的命令,一般的用戶只
需掌握一些最常用的命令參數就可以了.
最常用的三個參數是u、a、x,下面將通過例子來說明其具體用法.
[例20] 以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選項可以觀察到所有的進程情況.