Linux下顯示系統(tǒng)進程的命令ps,最常用的有ps -ef 和ps aux。這兩個到底有什么區(qū)別呢?兩者沒太大差別,討論這個問題,要追溯到Unix系統(tǒng)中的兩種風格,System V風格和BSD 風格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,兩者輸出略有不同?,F(xiàn)在的大部分Linux系統(tǒng)都是可以同時使用這兩種方式的。
我們提供的服務有:成都網(wǎng)站設計、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、察布查爾錫伯ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的察布查爾錫伯網(wǎng)站制作公司
ps -ef 是用標準的格式顯示進程的、其格式如下:?
其中各列的內容意思如下?
UID //用戶ID、但輸出的是用戶名?
PID //進程的ID?
PPID //父進程ID?
C //進程占用CPU的百分比?
STIME //進程啟動到現(xiàn)在的時間?
TTY //該進程在那個終端上運行,若與終端無關,則顯示? 若為pts/0等,則表示由網(wǎng)絡連接主機進程。?
CMD //命令的名稱和參數(shù)
ps aux 是用BSD的格式來顯示、其格式如下:?
同ps -ef 不同的有列有?
USER //用戶名?
%CPU //進程占用的CPU百分比?
%MEM //占用內存的百分比?
VSZ //該進程使用的虛擬內存量(KB)?
RSS //該進程占用的固定內存量(KB)(駐留中頁的數(shù)量)?
STAT //進程的狀態(tài)?
START //該進程被觸發(fā)啟動時間?
TIME //該進程實際使用CPU運行的時間
其中STAT狀態(tài)位常見的狀態(tài)字符有?
D //無法中斷的休眠狀態(tài)(通常 IO 的進程);?uninterruptible sleep (usually IO)不可中斷?
R //正在運行可中在隊列中可過行的;?
S //處于休眠狀態(tài);?
T //停止或被追蹤;?traced or stopped?
W //進入內存交換 (從內核2.6開始無效);?
X //死掉的進程 (基本很少見);?
Z //僵尸進程;??a defunct (”zombie”) process
//優(yōu)先級高的進程?
N //優(yōu)先級較低的進程?
L //有些頁被鎖進內存;?
s //進程的領導者(在它之下有子進程);?
l //多線程,克隆線程(使用 CLONE_THREAD, 類似 NPTL pthreads);?
+ //位于后臺的進程組;
1、ps -ef表示bai查看全格式的全部進程。
ps是linux下最常用的也是非常強大的進程查看命令,常配合管道命令 | 和查找命令 grep 同時執(zhí)行來查看特定進程。
參數(shù)含義:
-e 顯示所有進程。-f 全格式。-h 不顯示標題。-l 長格式。-w 寬輸出。a 顯示終端上的所有進程,包括其他用戶的進程。r 只顯示正在運行的進程。x 顯示沒有控制終端的進程。
2、擴展資料:
進程狀態(tài):
R 運行,正在運行或在運行隊列中等待。
S 中斷,休眠中, 受阻, 在等待某個條件的形成或接受到信號。
D 不可中斷,收到信號不喚醒和不可運行, 進程必須等待直到有中斷發(fā)生。
Z 僵死 ,進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統(tǒng)調用后釋放。
T 停止,進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行。
3、grep命令是查找
中間的|是管道命令 是指ps命令與grep同時執(zhí)行
PS是LINUX下最常用的也是非常強大的進程查看命令
grep命令是查找,是一種強大的文本搜索工具,它能 使用正則表達式 搜索文本,并把匹配的行打印出來。
grep全稱是Global Regular Expression Print,表示全局正則表達式版本,它的使用權限是所有用戶。
以下這條命令是檢查java 進程是否存在:ps -ef |grep java
字段含義如下:
UID ? ? ? PID ? ??? PPID ? ?? C???? STIME ?? TTY ? ??? TIME?????????CMD
zzw??????14124?? 13991????? 0???? 00:38????? pts/0????? 00:00:00??? grep --color=auto dae
UID????? :程序被該 UID 所擁有
PID????? :就是這個程序的 ID?
PPID??? :則是其上級父程序的ID
C????????? :CPU使用的資源百分比
STIME :系統(tǒng)啟動時間
TTY???? :登入者的終端機位置
TIME???:使用掉的CPU時間。
CMD?? :所下達的是什么指令
ps -e|grep dae
[TOC]
可以列出被進程所打開的文件的信息。被打開的文件可以是
1.普通的文件
2.目錄抽象為特殊文件
3.網(wǎng)絡文件系統(tǒng)的文件,抽象為文件
4.字符設備文件在linux抽象為文件
5.(函數(shù))共享庫
6.管道,命名管道
7.符號鏈接
8.底層的socket字流,網(wǎng)絡socket,unix域名socket
9.在linux里面,很多東西都抽象為文件,提供了統(tǒng)一的訪問接口
屬性第一個字符:
rwx=0x111,二進制表示
列出所有進程
-ef f:father
ps –el ,
e:every :顯示所有進程信息,等價于A
a:all :顯示除了當前終端進程外的其他進程
l: long 長格式顯示進程信息。
linux 線程狀態(tài):
ps工具標識進程的5種狀態(tài)碼:
chmod 對象 +/- 模式
對象:u(user),g(group),o(other),a(all)
模式:r,w,x
由于inode號碼與文件名分離,這種機制導致了一些Unix/Linux系統(tǒng)特有的現(xiàn)象。
軟件不關閉情況下更新:寫入同名不同inode的文件,下次啟動由于老的inode已經(jīng)丟失,操作系統(tǒng)回收原來的Block。
綜上,總結一下軟鏈接和硬鏈接的區(qū)別:
參考: 阮一峰的網(wǎng)絡日志:理解inode
Ctrl+z 暫停進程執(zhí)行
uname -m 顯示機器的處理器架構(2)
uname -r 顯示正在使用的內核版本
jobs: 查看后臺任務
fg +jobNum: 將后臺任務調到前臺
未完,不定期更新中...
ps [options] [—help]
ps [-aAcdefHjlmNVwy][acefghLnrsSTuvxX][-C 指令名稱][-g 群組名稱]
[-G 群組識別碼][-p 進程識別碼][p 進程識別碼][-s 階段作業(yè)]
[-t 終端機編號][t 終端機編號][-u 用戶識別碼][-U 用戶識別碼]
[U 用戶名稱][-進程識別碼][--cols 每列字符數(shù)]
[--columns 每列字符數(shù)][--cumulative][--deselect][--forest]
[--headers][--help][-- info][--lines 顯示列數(shù)][--no-headers]
[--group 群組名稱][-Group 群組識別碼][--pid 進程識別碼]
[--rows 顯示列數(shù)][--sid 階段作業(yè)][--tty 終端機編號]
[--user 用戶名稱][--User 用戶識別碼][--version]
[--width 每列字符數(shù)]
? ?-a? 顯示所有終端機下執(zhí)行的進程,除了階段作業(yè)領導者之外
a? 顯示現(xiàn)行終端機下的所有進程,包括其他用戶的進程
-A? 顯示所有進程
-c? 顯示CLS和PRI欄位
c? 列出進程時,顯示每個進程真正的指令名稱,而不包含路徑,參數(shù)或常駐服務的標示
-C指令名稱 指定執(zhí)行指令的名稱,并列出該指令的進程的狀況
-d 顯示所有進程,但不包括階段作業(yè)領導者的進程
-e 此參數(shù)的效果和指定"A"參數(shù)相同
e 列出進程時,顯示每個進程所使用的環(huán)境變量
-f 顯示UID,PPIP,C與STIME欄位
f 用ASCII字符顯示樹狀結構,表達進程間的相互關系
-g群組名稱 此參數(shù)的效果和指定"-G"參數(shù)相同,當亦能使用階段作業(yè)領導者的名稱來指定
g 顯示現(xiàn)行終端機下的所有進程,包括群組領導者的進程
-G群組識別碼 列出屬于該群組的進程的狀況,也可使用群組名稱來指定
h 不顯示標題列
-H 顯示樹狀結構,表示進程間的相互關系
-j或j 采用工作控制的格式顯示進程狀況
-l或l 采用詳細的格式來顯示進程狀況
L 列出欄位的相關信息
-m或m 顯示所有的執(zhí)行緒
n 以數(shù)字來表示USER和WCHAN欄位
-N 顯示所有的進程,除了執(zhí)行ps指令終端機下的進程之外
-p進程識別碼 指定進程識別碼,并列出該進程的狀況
? ?p進程識別碼 此參數(shù)的效果和指定"-p"參數(shù)相同,只在列表格式方面稍有差異
r 只列出現(xiàn)行終端機正在執(zhí)行中的進程
-s階段作業(yè) 指定階段作業(yè)的進程識別碼,并列出隸屬該階段作業(yè)的進程的狀況
? ? s 采用進程信號的格式顯示進程狀況
S 列出進程時,包括已中斷的子進程資料
-t終端機編號 指定終端機編號,并列出屬于該終端機的進程的狀況
t終端機編號 此參數(shù)的效果和指定"-t"參數(shù)相同,只在列表格式方面稍有差異
-T 顯示現(xiàn)行終端機下的所有進程
-u用戶識別碼 此參數(shù)的效果和指定"-U"參數(shù)相同
u 以用戶為主的格式來顯示進程狀況
-U用戶識別碼 列出屬于該用戶的進程的狀況,也可使用用戶名稱來指定
U用戶名稱 列出屬于該用戶的進程的狀況
v 采用虛擬內存的格式顯示進程狀況
-V或V 顯示版本信息
-w或w 采用寬闊的格式來顯示進程狀況。
? ?x 顯示所有進程,不以終端機來區(qū)分
? ?X 采用舊式的Linux i386登陸格式顯示進程狀況
? ?-y 配合參數(shù)"-l"使用時,不顯示F(flag)欄位,并以RSS欄位取代ADDR欄位
-進程識別碼 此參數(shù)的效果和指定"p"參數(shù)相同
--cols每列字符數(shù) 設置每列的最大字符數(shù)
--columns每列字符數(shù) 此參數(shù)的效果和指定"--cols"參數(shù)相同
--cumulative 此參數(shù)的效果和指定"S"參數(shù)相同
--deselect 此參數(shù)的效果和指定"-N"參數(shù)相同
--forest 此參數(shù)的效果和指定"f"參數(shù)相同
--headers 重復顯示標題列
--help 在線幫助
--info 顯示排錯信息
--lines顯示列數(shù) 設置顯示畫面的列數(shù)
--no-headers? 此參數(shù)的效果和指定"h"參數(shù)相同,只在列表格式方面稍有差異
--group群組名稱 此參數(shù)的效果和指定"-G"參數(shù)相同
--Group群組識別碼 此參數(shù)的效果和指定"-G"參數(shù)相同
--pid進程識別碼 此參數(shù)的效果和指定"-p"參數(shù)相同
--rows顯示列數(shù) 此參數(shù)的效果和指定"--lines"參數(shù)相同
--sid階段作業(yè) 此參數(shù)的效果和指定"-s"參數(shù)相同
--tty終端機編號 此參數(shù)的效果和指定"-t"參數(shù)相同
--user用戶名稱 此參數(shù)的效果和指定"-U"參數(shù)相同
--User用戶識別碼 此參數(shù)的效果和指定"-U"參數(shù)相同
--version 此參數(shù)的效果和指定"-V"參數(shù)相同
? ?--widty每列字符數(shù) 此參數(shù)的效果和指定"-cols"參數(shù)相同
? ?-A 列出所有的行程
? ?-w 顯示加寬可以顯示較多的資訊
? -au 顯示較詳細的資訊
? -aux 顯示所有包含其他使用者的行程
linux上進程有5種狀態(tài):?
1.?運行(正在運行或在運行隊列中等待)?
2.?中斷(休眠中,?受阻,?在等待某個條件的形成或接受到信號)?
3.?不可中斷(收到信號不喚醒和不可運行,?進程必須等待直到有中斷發(fā)生)?
4.?僵死(進程已終止,?但進程描述符存在,?直到父進程調用wait4()系統(tǒng)調用后釋放)?
5.?停止(進程收到SIGSTOP,?SIGSTP,?SIGTIN,?SIGTOU信號后停止運行運行)?
ps工具標識進程的5種狀態(tài)碼:?
D?不可中斷?uninterruptible?sleep?(usually?IO)?
R?運行?runnable?(on?run?queue)?
S?中斷?sleeping?
T?停止?traced?or?stopped?
Z?僵死?a?defunct?(”zombie”)?process?
1、# ps aux //顯示所有正在內存中的程序
USER:該?process?屬于那個使用者賬號的
PID?:該?process?的號碼
%CPU:該?process?使用掉的?CPU?資源百分比
%MEM:該?process?所占用的物理內存百分比
VSZ?:該?process?使用掉的虛擬內存量?(Kbytes)
RSS?:該?process?占用的固定的內存量?(Kbytes)
TTY?:該?process?是在那個終端機上面運作,若與終端機無關,則顯示??,另外,?tty1-tty6?是本機上面的登入者程序,若為?pts/0?等等的,則表示為由網(wǎng)絡連接進主機的程序。
STAT:該程序目前的狀態(tài),主要的狀態(tài)有
R?:該程序目前正在運作,或者是可被運作
S?:該程序目前正在睡眠當中?(可說是?idle?狀態(tài)),但可被某些訊號?(signal)?喚醒。
D: 無法中斷的休眠狀態(tài) (通常 IO 的進程)
T?:該程序目前正在偵測或者是停止了
Z?:該程序應該已經(jīng)終止,但是其父程序卻無法正常的終止他,造成?zombie?(疆尸)?程序的狀態(tài)
: 高優(yōu)先序的行程
N: 低優(yōu)先序的行程
L: 有記憶體分頁分配并鎖在記憶體內 (實時系統(tǒng)或捱A I/O)
START:該?process?被觸發(fā)啟動的時間
TIME?:該?process?實際使用?CPU?運作的時間
COMMAND:該程序的實際指令
2、# ps -A 顯示進程信息
3、# ps -u work //顯示work進程用戶信息
4、# ps -ef //顯示所有命令,連帶命令行
5、# ps -l //將屬于自己這次登入的pid與相關信息顯示出來
F:代表這個程序的旗標?(flag),?4?代表使用者為?super?user
S:代表這個程序的狀態(tài)?(STAT)
UID:程序被該?UID?所擁有
PID:就這個程序的?ID?
PPID:其上級父程序的ID
C:CPU使用的資源百分比
PRI:?Priority?(優(yōu)先執(zhí)行序)?的縮寫
NI:?Nice?值
ADDR:kernel?function,指出該程序在內存的那個部分。如果是個?running的程序,一般就是?"-"
SZ:使用掉的內存大小
WCHAN:目前這個程序是否正在運作當中,若為?-?表示正在運作
TTY:登入者的終端機位置
TIME:使用掉的?CPU?時間。
CMD:所下達的指令為何
在預設的情況下,?ps?僅會列出與目前所在的?bash?shell?有關的?PID,所以,?當使用?ps?-l?的時候,只有三個?PID。
6、其他
1)可以用?|?管道和?more?連接起來分頁查看
命令:ps?-aux?|more
2)把所有進程顯示出來,并輸出到ps001.txt文件
命令:ps?-aux??ps001.txt
3)輸出指定的字段
命令:ps -o pid,ppid,pgrp,session,tpgid,comm