4. 僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
創(chuàng)新互聯(lián)主營(yíng)筠連網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都App制作,筠連h5小程序制作搭建,筠連網(wǎng)站營(yíng)銷推廣歡迎筠連等地區(qū)企業(yè)咨詢
5. 停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號(hào)后停止運(yùn)行運(yùn)行)
ps工具標(biāo)識(shí)進(jìn)程的5種狀態(tài)碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運(yùn)行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
名稱:ps
使用權(quán)限:所有使用者
使用方式:ps [options] [--help]
說明:顯示瞬間行程 (process) 的動(dòng)態(tài)
參數(shù):
ps 的參數(shù)非常多, 在此僅列出幾個(gè)常用的參數(shù)并大略介紹含義
-A 列出所有的行程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細(xì)的資訊
-aux 顯示所有包含其他使用者的行程
au(x) 輸出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程擁有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的記憶體使用率
VSZ: 占用的虛擬記憶體大小
RSS: 占用的記憶體大小
TTY: 終端的次要裝置號(hào)碼 (minor device number of tty)
STAT: 該行程的狀態(tài):
D: 不可中斷的靜止
R: 正在執(zhí)行中
S: 靜止?fàn)顟B(tài)
T: 暫停執(zhí)行
Z: 不存在但暫時(shí)無法消除
W: 沒有足夠的記憶體分頁可分配
: 高優(yōu)先序的行程
N: 低優(yōu)先序的行程
L: 有記憶體分頁分配并鎖在記憶體內(nèi) (即時(shí)系統(tǒng)或捱A I/O)
START: 行程開始時(shí)間
TIME: 執(zhí)行的時(shí)間
COMMAND:所執(zhí)行的指令
范例:
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]
具體命令解釋如下:
1)ps a 顯示現(xiàn)行終端機(jī)下的所有程序,包括其他用戶的程序。
2)ps -A 顯示所有程序。
3)ps c 列出程序時(shí),顯示每個(gè)程序真正的指令名稱,而不包含路徑,參數(shù)或常駐服務(wù)的標(biāo)示。
4)ps -e 此參數(shù)的效果和指定"A"參數(shù)相同。
5)ps e 列出程序時(shí),顯示每個(gè)程序所使用的環(huán)境變量。
6)ps f 用ASCII字符顯示樹狀結(jié)構(gòu),表達(dá)程序間的相互關(guān)系。
7)ps -H 顯示樹狀結(jié)構(gòu),表示程序間的相互關(guān)系。
8)ps -N 顯示所有的程序,除了執(zhí)行ps指令終端機(jī)下的程序之外。
9)ps s 采用程序信號(hào)的格式顯示程序狀況。
10)ps S 列出程序時(shí),包括已中斷的子程序資料。
11)ps -t終端機(jī)編號(hào)
指定終端機(jī)編號(hào),并列出屬于該終端機(jī)的程序的狀況。
How to get all process ids without ps command on Linux?
On Linux, all running process have "metadata" stored in the? /proc filesystem .
# man? ps??
# ps -C sshd --no-header
# ps -C dockerd --no-header
-C cmdlist
Select by command name.? This selects the processes whose executable name is given in cmdlist.
you can use the long options --headers and --no-headers to enable printing headers each page or disable headers entirely, respectively.
#??ps -eo nlwp,pcpu,user,pid,ppid,args? --sort nlwp??
注:以?nlwp排序,默認(rèn)正序
LWP -- 輕量級(jí)進(jìn)程,即線程
NLWP --線程數(shù),即 number of threads in process
#? ps -eo pid,cmd,%mem,%cpu --sort=-%mem
Thecommand is highly valuable for system admins during troubleshooting the system.?
You can display the processes list in a sorted manner to find out the highest memory usage processes.
#? ps -mp? ?${pid}? ? -o? ?THREAD,tid,time
參數(shù)解釋:
-m:顯示所有的線程
-p:pid進(jìn)程使用CPU的時(shí)間
-o:該參數(shù)后是用戶自定義格式。
如:THREAD,tid,time表示線程、線程ID號(hào)、線程占用的時(shí)間。
$ ps -Hp? ?${pid}??
ps(1) — Linux manual page
Linux PS command with examples
How to get all process ids without ps command on Linux?
What is the difference between ps and top command?
1、ps -ef表示bai查看全格式的全部進(jìn)程。
ps是linux下最常用的也是非常強(qiáng)大的進(jìn)程查看命令,常配合管道命令 | 和查找命令 grep 同時(shí)執(zhí)行來查看特定進(jìn)程。
參數(shù)含義:
-e 顯示所有進(jìn)程。-f 全格式。-h 不顯示標(biāo)題。-l 長(zhǎng)格式。-w 寬輸出。a 顯示終端上的所有進(jìn)程,包括其他用戶的進(jìn)程。r 只顯示正在運(yùn)行的進(jìn)程。x 顯示沒有控制終端的進(jìn)程。
2、擴(kuò)展資料:
進(jìn)程狀態(tài):
R 運(yùn)行,正在運(yùn)行或在運(yùn)行隊(duì)列中等待。
S 中斷,休眠中, 受阻, 在等待某個(gè)條件的形成或接受到信號(hào)。
D 不可中斷,收到信號(hào)不喚醒和不可運(yùn)行, 進(jìn)程必須等待直到有中斷發(fā)生。
Z 僵死 ,進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放。
T 停止,進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號(hào)后停止運(yùn)行運(yùn)行。
3、grep命令是查找
中間的|是管道命令 是指ps命令與grep同時(shí)執(zhí)行
PS是LINUX下最常用的也是非常強(qiáng)大的進(jìn)程查看命令
grep命令是查找,是一種強(qiáng)大的文本搜索工具,它能 使用正則表達(dá)式 搜索文本,并把匹配的行打印出來。
grep全稱是Global Regular Expression Print,表示全局正則表達(dá)式版本,它的使用權(quán)限是所有用戶。
以下這條命令是檢查java 進(jìn)程是否存在: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????? :就是這個(gè)程序的 ID?
PPID??? :則是其上級(jí)父程序的ID
C????????? :CPU使用的資源百分比
STIME :系統(tǒng)啟動(dòng)時(shí)間
TTY???? :登入者的終端機(jī)位置
TIME???:使用掉的CPU時(shí)間。
CMD?? :所下達(dá)的是什么指令
ps -e|grep dae
使用ps命令時(shí),發(fā)現(xiàn)部分用戶顯示的是用戶名,有些用戶顯示的是UID,例如nmon程序的運(yùn)行時(shí)webmaster,但是ps顯示的不是直接顯示uid 500。
通過man發(fā)現(xiàn):8位用戶名的賬戶能夠顯示完整的用戶名,9位用戶名的賬戶就顯示了UID使用下面的命令來解決;
ps -o ruser=userForLongName -e -o pid,ppid,c,stime,tty,time,cmd
注意:“userForLongName”是隨便填寫的,Linux會(huì)自動(dòng)檢查此字符串的長(zhǎng)度,為15,則15位以下的用戶名都可以正常顯示。
Linux中的ps命令是Process Status的縮寫。ps命令用來列出系統(tǒng)中當(dāng)前運(yùn)行的那些進(jìn)程。
ps命令列出的是當(dāng)前那些進(jìn)程的快照,就是執(zhí)行ps命令的那個(gè)時(shí)刻的那些進(jìn)程,如果想要?jiǎng)討B(tài)的顯示進(jìn)程信息,就可以使用top命令。
要對(duì)進(jìn)程進(jìn)行監(jiān)測(cè)和控制,首先必須要了解當(dāng)前進(jìn)程的情況,也就是需要查看當(dāng)前進(jìn)程,而 ps 命令就是最基本同時(shí)也是非常強(qiáng)大的進(jìn)程查看命令。
使用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行的狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒有僵死、哪些進(jìn)程占用了過多的資源等等。總之大部分信息都是可以通過執(zhí)行該命令得到的。
Linux下顯示系統(tǒng)進(jìn)程的命令ps,最常用的有ps -ef 和ps aux。這兩個(gè)到底有什么區(qū)別呢??jī)烧邲]太大差別,討論這個(gè)問題,要追溯到Unix系統(tǒng)中的兩種風(fēng)格,System V風(fēng)格和BSD 風(fēng)格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,兩者輸出略有不同。現(xiàn)在的大部分Linux系統(tǒng)都是可以同時(shí)使用這兩種方式的。
ps -ef 是用標(biāo)準(zhǔn)的格式顯示進(jìn)程的、其格式如下:?
其中各列的內(nèi)容意思如下?
UID //用戶ID、但輸出的是用戶名?
PID //進(jìn)程的ID?
PPID //父進(jìn)程ID?
C //進(jìn)程占用CPU的百分比?
STIME //進(jìn)程啟動(dòng)到現(xiàn)在的時(shí)間?
TTY //該進(jìn)程在那個(gè)終端上運(yùn)行,若與終端無關(guān),則顯示? 若為pts/0等,則表示由網(wǎng)絡(luò)連接主機(jī)進(jìn)程。?
CMD //命令的名稱和參數(shù)
ps aux 是用BSD的格式來顯示、其格式如下:?
同ps -ef 不同的有列有?
USER //用戶名?
%CPU //進(jìn)程占用的CPU百分比?
%MEM //占用內(nèi)存的百分比?
VSZ //該進(jìn)程使用的虛擬內(nèi)存量(KB)?
RSS //該進(jìn)程占用的固定內(nèi)存量(KB)(駐留中頁的數(shù)量)?
STAT //進(jìn)程的狀態(tài)?
START //該進(jìn)程被觸發(fā)啟動(dòng)時(shí)間?
TIME //該進(jìn)程實(shí)際使用CPU運(yùn)行的時(shí)間
其中STAT狀態(tài)位常見的狀態(tài)字符有?
D //無法中斷的休眠狀態(tài)(通常 IO 的進(jìn)程);?uninterruptible sleep (usually IO)不可中斷?
R //正在運(yùn)行可中在隊(duì)列中可過行的;?
S //處于休眠狀態(tài);?
T //停止或被追蹤;?traced or stopped?
W //進(jìn)入內(nèi)存交換 (從內(nèi)核2.6開始無效);?
X //死掉的進(jìn)程 (基本很少見);?
Z //僵尸進(jìn)程;??a defunct (”zombie”) process
//優(yōu)先級(jí)高的進(jìn)程?
N //優(yōu)先級(jí)較低的進(jìn)程?
L //有些頁被鎖進(jìn)內(nèi)存;?
s //進(jìn)程的領(lǐng)導(dǎo)者(在它之下有子進(jìn)程);?
l //多線程,克隆線程(使用 CLONE_THREAD, 類似 NPTL pthreads);?
+ //位于后臺(tái)的進(jìn)程組;
Linux ps命令,英文全拼process
status。用于顯示當(dāng)前進(jìn)程的狀態(tài),類似于Windows的任務(wù)管理器。運(yùn)用該命令可以確定有哪些進(jìn)程正在運(yùn)行和運(yùn)行地狀態(tài)、進(jìn)程是否結(jié)束、進(jìn)程有沒有僵死、哪些進(jìn)程占用了過多地資源等等。
語法
ps [options] [--help]
參數(shù)(ps的參數(shù)比較多,在這里為大家簡(jiǎn)單列舉幾個(gè)常用的)
-A 列出所有的進(jìn)程
-w 顯示加寬可以顯示較多的資訊
-au 顯示較詳細(xì)的資訊
-aux 顯示所有包含其他使用者的行程
au(x) 輸出格式:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER:行程擁有者
PID:pid
%CPU:占用的CPU使用率
%MEM:占用的記憶體使用率
VSZ:占用的虛擬記憶體大小
RSS:占用的記憶體大小
TTY:終端的次要裝置號(hào)碼
STAT:該行程的狀態(tài)
①D 無法中斷的休眠狀態(tài)
②R 正在執(zhí)行中
③S 靜止?fàn)顟B(tài)
④T 暫停執(zhí)行
⑤Z 不存在但暫時(shí)無法消除
⑥W 沒有足夠的記憶體分頁可分配
⑦ 高優(yōu)先序的行程
⑧N 低優(yōu)先序的行程
⑨L 有記憶體分頁分配并鎖在記憶體內(nèi)
START:行程開始時(shí)間
TIME:執(zhí)行的時(shí)間
COMMAND:所執(zhí)行的指令