ps aux
顯示其他用戶啟動的進程(a)
查看系統中屬於自己的進程(x)
啟動這個進程的用戶和它啟動的時間(u)
使用“date -s”指令來修改系統時間
例如將系統時間設定成1996年6月10日的命令如下。
#date -s 06/10/96
將系統時間設定成下午1點12分0秒的命令如下。
#date -s 13:12:00
-------------------------------------- ----------------
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME
COMMAND
root 1
0.0 0.0 1340 440
?
S Nov05 0:04
init
root 2
0.0 0.0
0
0
? SW Nov05
0:00 [keventd]
root 3
0.0 0.0
0
0 ?
SW Nov05 0:00 [keventd]
...
------------------------------------- -----------------
USER域指明了是哪個用戶啟動了這個命令;
用戶可以查看某個進程佔用了多少CPU;
記憶體使用及其VSZ(虛擬記憶體大小)和RSS(常駐集大小):
VSZ表示如果一個程式完全駐留在記憶體的話需要佔用多少記憶體空間;
RSS指明了目前實際佔用了多少記憶體;
STAT顯示了進程目前的狀態:
"S":進程處在睡眠狀態,表明這些進程在等待某些事件發生--可能是用戶輸入或系統資源的可用性;
last命令可以有效的查看系統登錄事件
在一個進程調用了exit之後,進程並非馬上就消失掉,而是留下一個稱為殭屍進程(Zombie)的資料結構。在Linux行程的5種狀態中,殭屍行程 是非常特殊的一種,它已經放棄了幾乎所有記憶體空間,沒有任何可執行程式碼,也不能被調度,僅僅在進程列表中保留一個位置,記載該進程的退出狀態等資訊供其他 進程收集,除此之外,殭屍行程不再佔有任何記憶體空間。
系統呼叫exit的作用是使進程退出,但也僅限於將一個正常的進程變成一個殭屍進程,並不能將其完全銷毀。
程序一旦呼叫了wait,就立即阻塞自己,由wait自動分析是否當前進程的某個子進程已經退出,如果讓它找到了這樣一個已經變成殭屍的子進程,wait
就會收集這個子進程的信息,並把它徹底銷毀後返回;如果沒有找到這樣一個子進程,wait就會一直阻塞在這裡,直到有一個出現為止。
轉載 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 runner@01: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(無駐留頁),
使用ps格式輸出來查看進程狀態:
ps -eo user,stat..,cmd
user 使用者名稱
uid 使用者號碼
pid 進程號
pp 父名程序號
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: 佔用的虛擬記憶體大小的記憶體使用率
VSZ: 佔用的虛擬記憶體大小的記憶體使用率
VSZ: 佔用的虛擬記憶體大小的記憶體使用率
VSZ: 佔用的虛擬記憶體大小的記憶體使用率
VSZ: 佔用的虛擬記憶體大小的記憶體使用率
VSZ: 佔用的虛擬記憶體大小的記憶體使用率
VSZ: 佔用的虛擬記憶體大小
RSS: 佔用的記憶體大小
TTY: 終端的次要裝置號碼(minor device number of tty)
STAT: 該行程的狀態:
D: 不可中斷的靜止
R: 正在執行中
S: 靜止狀態
T: 暫停執行
Z: 不存在但暫時無法消除
W: 沒有足夠的記憶體分頁可分配
ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
:0010:00:00 :000:00 :00020:00:00:00 :000:00:00 :00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPUER 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
root 2 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 提供了很多的選項參數,常用的有以下幾個:
u 按使用者名稱和啟動時間的順序來顯示進程;
j 用任務格式來顯示進程;
f 用樹形格式來顯示進程;
x 顯示無控制終端的進程;
r 顯示運行中的進程;
ww 避免詳細參數被截斷;
USER 進程的屬主;
PID 進程的ID;
PPID 父進程;
%CPU 進程佔用的CPU百分比;
%MEM 佔用內存的百分比;
NI 進程的NICE值,數值大,表示較少佔用CPU時間;
VSZ 進程虛擬大小;
RSS 駐留中頁的數量;
TTY 終端ID
STAT 進程狀態(有以下幾種)
R 正在運行可中在佇列中可過行的;
S 處於休眠狀態;
T 停止或被追蹤;
W 進入記憶體交換(從核心2.6開始無效);
X 死);掉的進程(從來沒見過);
Z 殭屍進程;
[root@localhost ~]# ps -aux |more
可以用| 管道和more 連接起來分頁查看。
[root@localhost ~]# ps -aux > ps001.txt
[root@localhost ~]# more ps001.txt
這裡是把所有進程顯示出來,並輸出到ps001.txt文件,然後再透過moremore 來分頁查看。
有十幾種控制進程的方法,以下是一些常用的方法:
kill -STOP [pid]
發送SIGSTOP (17,19,23)停止一個進程,而不消滅這個進程。
kill -CONT [pid]
發送SIGCONT (19,18,25)重新開始一個停止的程序。
kill -KILL [pid]
發送SIGKILL (9)強迫程序立即停止,且不實施清理操作。
kill -9 -1
終止你擁有的全部流程。
SIGKILL 和 SIGSTOP 訊號不能被捕捉、封鎖或忽略,但是,其它的訊號可以。所以這是你的終極武器。