概述 閱讀man ps頁,與man top頁,最權威與標準,也清楚html
概念java
英語linux
命令apache
ps編程
topbootstrap
slabtopcentos
pidoftomcat
=========================================bash
有時候系統管理員可能只關心如今系統中運行着哪些程序,而不想知道有哪些進程在運行。因爲一個應用程序可能須要啓動多個進程。因此在同等狀況下,進程的數量要比程序多的多。使用ps能夠肯定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等等。session
ps中的session leader引起的搜索與思考
在第 1 節 「信號的基本概念」
中我說過「Shell能夠同時運行一個前臺進程和任意多個後臺進程」實際上是不全面的,如今咱們來研究更復雜的狀況。事實上,Shell分先後臺來控制的不是進程而是做業(Job)或者進程組(Process Group)。一個前臺做業能夠由多個進程組成,一個後臺做業也能夠由多個進程組成,Shell能夠同時運行一個前臺做業和任意多個後臺做業,這稱爲做業控制(Job Control)。例如用如下命令啓動5個進程:
$ proc1 | proc2 &
$ proc3 | proc4 | proc5
其中proc1和proc2屬於同一個後臺進程組,proc三、proc四、proc5屬於同一個前臺進程組,Shell進程自己屬於一個單獨的進程組。這些進程組的控制終端相同,它們屬於同一個Session。當用戶在控制終端輸入特殊的控制鍵(例如Ctrl-C) 時,內核會發送相應的信號(例如SIGINT)給前臺進程組的全部進程。各進程、進程組、Session的關係以下圖所示
http://blog.chinaunix.net/uid-25681671-id-3201927.html Linux下PS命令詳解
http://blog.csdn.net/jibcy/article/details/7368611 Session與進程組
http://blog.csdn.net/jibcy/article/details/7357301 unix 進程組 會話期 做業控制
在UNIX系統中,做業控制容許在一個終端上啓動多個做業(進程組),控制哪個做業能夠存取該終端,以及哪些做業在後臺運行。
爲了支持做業控制,引入了進程組,會話期,控制終端等概念,還須要內核以必定的信號支持。
一·進程組。
每個進程除了有一個進程PID以外,還屬於一個進程組,用進程組ID表示。返回當前進程組ID的系統調用爲:
二·對話期(session)
對話期是一個或多個進程組的集合,對話期能夠有一個控制終端。
三。前臺進程組,後臺進程組
一個對話期的幾個進程組能夠被分紅一個前臺進程組以及一個或幾個後臺進程組。
若是一個對話期有一個控制終端,那麼它有一個前臺進程組,其餘進程組爲後臺進程組。
不管什麼時候鍵入中斷鍵(Ctrl-C)或者退出鍵(Ctrl-\),就會形成中斷信號SIGINT或者退出信號SITQUIT送至前臺進程組中的全部進程。
只有前臺進程組中的進程能夠接受終端輸入,若是後臺進程組的進程試圖讀終端,那麼內核會發送一個特定的信號SIGTTIN給後臺做業,這一般會中止(掛起)次後臺做業。當用將次後臺進程轉爲前臺進程後(移入前臺進程組),會發送一個SIGCONT信號給該進程,使該進程繼續運行。
-A 顯示全部進程(等價於-e)(utility)
-a 顯示一個終端的全部進程,除了會話引線
ps c 列出程序時,顯示每一個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。
最經常使用的方法是ps -aux,而後再利用一個管道符號導向到grep去查找特定的進程,而後再對特定的進程進行操做。
ps aux的顯示來觀察auditd的啓動優先級
root 3318 0.0 0.0 12516 764 ? S<sl Mar25 0:00 auditd
S<sl S表示進程正在睡眠,<表示具備較高的優先級,s表示多進程,l表示多線程
ps和top的區別
ps看到的是命令執行瞬間的進程信息,而top能夠持續的監視
ps只是查看進程,而top還能夠監視系統性能,如平均負載,cpu和內存的消耗
另外top還能夠操做進程,如改變優先級(命令r)和關閉進程(命令k)
linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的造成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
5. 中止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後中止運行運行)
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 顯示全部程序,不以終端機來區分。
14)ps -l 較長,較詳細的顯示該PID的信息
解釋
[root@CentOS5 ~]# ps aux|grep D
# ps -lA |more
相關信息的意義:
F 進程的標誌(flag),4表示用戶為超級用戶
S 進程的狀態(stat),各STAT的意義見下文
C CPU使用資源的百分比
PRI priority(優先級)的縮寫,
NI Nice值,
ADDR 核心功能,指出該進程在內存的那一部分,若是是運行的進程,通常都是「-」
SZ 用掉的內存的大小
WCHAN 當前進程是否正在運行,若為「-」表示正在運行
NI 進程的NICE值,數值大,表示較少佔用CPU時間;
TIME 進程使用的總cpu時間
VSZ 進程所使用的虛存的大小(Virtual Size)
RSS 進程使用的駐留集大小或者是實際內存的大小,Kbytes字節
# ps aux |more
USER 進程的屬主;
PID 進程的ID;
PPID 父進程;
%CPU 進程佔用的CPU百分比;
%MEM 佔用內存的百分比;
NI 進程的NICE值,數值大,表示較少佔用CPU時間;
VSZ 該進程使用的虛擬內存量(KB);
RSS 該進程佔用的固定內存量(KB)(駐留中頁的數量);
TTY 該進程在那個終端上運行(登陸者的終端位置),若與終端無關,則顯示(?)。若為pts/0等,則表示由網絡連接主機進程
WCHAN 當前進程是否正在進行,若為-表示正在進行;
START 該進程被觸發啓動時間;
TIME 該進程實際使用CPU運行的時間;
COMMAND 命令的名稱和參數;
STAT 進程的狀態:進程狀態使用字符表示的(STAT的狀態碼)
R 運行 Runnable (on run queue) 正在運行或在運行隊列中等待。
S 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的造成或接受到信號。
I 空閒 Idle
Z 僵死 Zombie(a defunct process) 進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放。
D 不可中斷 Uninterruptible sleep (ususally IO) 收到信號不喚醒和不可運行, 進程必須等待直到有中斷髮生。
D 沒法中斷的休眠狀態(一般 IO 的進程);
T 終止 Terminate 進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後中止運行運行。
P 等待交換頁
W 無駐留頁 has no resident pages 沒有足夠的記憶體分頁可分配。
X 死掉的進程
< 高優先級進程 高優先序的進程
N 低優先級進程 低優先序的進程
L 內存鎖頁 Lock 有記憶體分頁分配並縮在記憶體內
s 進程的領導者(在它之下有子進程);
l 多進程的(使用 CLONE_THREAD, 相似 NPTL pthreads)
+ 位於後臺的進程組
==================================================
TIME -- CPU Time
Total CPU time the task has used since it started.
When ’Cumulative mode’ is On, each process is listed with the cpu time that it and its dead children has used.
You toggle ’Cumulative mode’ with ’S’, which is a command-line option and an interactive command. See the ’S’ interactive command for additional information regarding this mode.
TIME+ -- CPU Time, hundredths
The same as ’TIME’, but reflecting more granularity through hundredths of a second.
granularity 粒度
hundredths of a second 百分之一秒
================================================
樣例:
查看當前系統進程的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 -aux
列出相似程序樹的程序顯示(顯示進程下有哪些子進程)
ps -axjf
找出與 cron 與 syslog 這兩個服務有關的 PID 號碼
ps aux | egrep '(cron|syslog)'
也能夠這樣使用ps格式輸出來查看進程狀態:
ps -eo user,stat..,cmd
查看當前系統進程的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
在Linux下,還有一種方法檢查某個進程是否存在,利用/proc文件系統. /proc/pid/stat裏面有進程的狀態,進程可執行文件名等.若是該文件不存在了,那進程確定退出了.若是存在,能夠檢查狀態和文件名是否正確.效率可能比PS仍是高一些,由於/proc是虛擬文件系統,存在與內存中.
如何利用/proc文件系統
cat /proc/pid/status
這裏pid是你的進程ID,看看輸出結果,有一欄是State
- When the process that dies is the session leader of a session that is
attached to a terminal device, SIGHUP is sent to all processes in
the foreground process group of that terminal device.
- When the death of a process causes a process group to become orphaned,
and one or more processes in the orphaned group are stopped, then
SIGHUP and SIGCONT are sent to all members of the orphaned
group. (An orphaned process group is one where no process in the group
has a parent which is part of the same session, but not the same process
group.)
ref: http://www.unixguide.net/unix/programming/1.15.shtml
《UNIX環境高級編程》第十章說:「若是對話期首進程(session leader)終止,則也產生SIGHUP。此信號被髮送給該對話期前臺進程組中的每個進程。」
對這個很多人可能有疑問,而實際上,上文應該少說了一個條件:即session leader必須還有一個控制終端(CTTY)。
[root@109-com1 ~]# ps -eLo pid,lwp,pcpu | grep 11167
-e與-A是同樣的
[root@250-shiyan ~]# ps -e >pse
[root@250-shiyan ~]# ps -A >psa
[root@250-shiyan ~]# diff pse psa
75c75
< 7761 pts/1 00:00:00 ps
---
> 7762 pts/1 00:00:00 ps
本終端的進程除外
[root@250-shiyan ~]# ps -N
[root@250-shiyan ~]# ps T
PID TTY STAT TIME COMMAND
7657 pts/1 Ss 0:00 -bash
7784 pts/1 R+ 0:00 ps T
[root@250-shiyan ~]# ps a
PID TTY STAT TIME COMMAND
1143 tty1 Ss+ 0:00 /sbin/mingetty /dev/tty1
1145 tty2 Ss+ 0:00 /sbin/mingetty /dev/tty2
1147 tty3 Ss+ 0:00 /sbin/mingetty /dev/tty3
1149 tty4 Ss+ 0:00 /sbin/mingetty /dev/tty4
1151 tty5 Ss+ 0:00 /sbin/mingetty /dev/tty5
1153 tty6 Ss+ 0:00 /sbin/mingetty /dev/tty6
3636 pts/0 Ss+ 0:00 -bash
7657 pts/1 Ss 0:00 -bash
8372 pts/1 R+ 0:00 ps a
[root@250-shiyan ~]# ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1143 0.0 0.1 4064 572 tty1 Ss+ Jan13 0:00 /sbin/mingetty /dev/tty1
root 1145 0.0 0.1 4064 572 tty2 Ss+ Jan13 0:00 /sbin/mingetty /dev/tty2
root 1147 0.0 0.1 4064 568 tty3 Ss+ Jan13 0:00 /sbin/mingetty /dev/tty3
root 1149 0.0 0.1 4064 568 tty4 Ss+ Jan13 0:00 /sbin/mingetty /dev/tty4
root 1151 0.0 0.1 4064 572 tty5 Ss+ Jan13 0:00 /sbin/mingetty /dev/tty5
root 1153 0.0 0.1 4064 572 tty6 Ss+ Jan13 0:00 /sbin/mingetty /dev/tty6
root 3636 0.0 0.9 111176 4912 pts/0 Ss+ Mar12 0:00 -bash
root 7657 0.0 0.9 111176 4812 pts/1 Ss Mar16 0:00 -bash
root 8375 0.0 0.2 110236 1168 pts/1 R+ 10:20 0:00 ps u
[root@250-shiyan ~]# ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
1143 tty1 Ss+ 0:00 0 11 4052 572 0.1 /sbin/mingetty /dev/tty1
1145 tty2 Ss+ 0:00 0 11 4052 572 0.1 /sbin/mingetty /dev/tty2
1147 tty3 Ss+ 0:00 0 11 4052 568 0.1 /sbin/mingetty /dev/tty3
1149 tty4 Ss+ 0:00 0 11 4052 568 0.1 /sbin/mingetty /dev/tty4
1151 tty5 Ss+ 0:00 0 11 4052 572 0.1 /sbin/mingetty /dev/tty5
1153 tty6 Ss+ 0:00 0 11 4052 572 0.1 /sbin/mingetty /dev/tty6
3636 pts/0 Ss+ 0:00 0 845 110330 4912 0.9 -bash
7657 pts/1 Ss 0:00 0 845 110330 4812 0.9 -bash
8379 pts/1 R+ 0:00 0 76 108051 1036 0.2 ps v
[root@250-shiyan ~]# ps -o rss,pid,vsz,cmd
RSS PID VSZ CMD
4812 7657 111176 -bash
1036 8370 108128 ps -o rss,pid,vsz,cmd
[root@84-monitor monitor]# ps -O sid,vsz
PID SID VSZ S TTY TIME COMMAND
7684 12642 108096 R pts/3 00:00:00 ps -O sid,vsz
12642 12642 108432 S pts/3 00:00:00 -bash
[root@84-monitor monitor]# ps -ww -f 13691
UID PID PPID C STIME TTY STAT TIME CMD
root 13691 1 0 Feb26 ? Sl 54:36 /usr/local/jdk1.6//bin/java -Djava.util.logging.config.file=/var/www/html/apache-tomcat-6.0.41/apache-tomcat-6.0.41/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/var/www/html/apache-tomcat-6.0.41/apache-tomcat-6.0.41/endorsed -classpath /var/www/html/apache-tomcat-6.0.41/apache-tomcat-6.0.41/bin/bootstrap.jar -Dcatalina.base=/var/www/html/apache-tomcat-6.0.41/apache-tomcat-6.0.41 -Dcatalina.home=/var/www/html/apache-tomcat-6.0.41/apache-tomcat-6.0.41 -Djava.io.tmpdir=/var/www/html/apache-tomcat-6.0.41/apache-tomcat-6.0.41/temp org.apache.catalina.startup.Bootstrap start
[root@84-monitor monitor]# ps -fp 16213,8761
UID PID PPID C STIME TTY TIME CMD
root 8761 8760 0 Feb03 ? 00:00:00 /usr/sbin/postdrop -r
apache 16213 27245 0 Mar15 ? 00:00:00 /usr/sbin/httpd
[root@84-monitor monitor]# ps -fp "4083 7277" -fp 16213,8761
UID PID PPID C STIME TTY TIME CMD
postfix 4083 1251 0 13:43 ? 00:00:00 pickup -l -t fifo -u
root 7277 11415 0 Feb03 ? 00:00:00 CROND
root 8761 8760 0 Feb03 ? 00:00:00 /usr/sbin/postdrop -r
apache 16213 27245 0 Mar15 ? 00:00:00 /usr/sbin/httpd
[root@84-monitor monitor]# ps X
PID STACKP ESP EIP TMOUT ALARM STAT TTY TIME COMMAND
1282 82161fb0 82161e88 0683b4c0 - - Ss+ tty1 0:00 /sbin/mingetty /dev/tty1
1284 a21c4fb0 a21c4e88 4f87b4c0 - - Ss+ tty2 0:00 /sbin/mingetty /dev/tty2
1286 653d3a10 653d38e8 f4d6b4c0 - - Ss+ tty3 0:00 /sbin/mingetty /dev/tty3
1289 22ec1380 22ec1258 3b3334c0 - - Ss+ tty4 0:00 /sbin/mingetty /dev/tty4
1293 a024df80 a024de58 f77eb4c0 - - Ss+ tty5 0:00 /sbin/mingetty /dev/tty5
[root@84-monitor monitor]# ps j
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 1282 1282 1282 tty1 1282 Ss+ 0 0:00 /sbin/mingetty /dev/tty1
1 1284 1284 1284 tty2 1284 Ss+ 0 0:00 /sbin/mingetty /dev/tty2
1 1286 1286 1286 tty3 1286 Ss+ 0 0:00 /sbin/mingetty /dev/tty3
1 1289 1289 1289 tty4 1289 Ss+ 0 0:00 /sbin/mingetty /dev/tty4
1 1293 1293 1293 tty5 1293 Ss+ 0 0:00 /sbin/mingetty /dev/tty5
[root@84-monitor monitor]# ps s
UID PID PENDING BLOCKED IGNORED CAUGHT STAT TTY TIME COMMAND
0 1282 0000000000000000 0000000000000000 0000000000000000 0000000000000000 Ss+ tty1 0:00 /sbin/mingetty /dev/tty1
0 1284 0000000000000000 0000000000000000 0000000000000000 0000000000000000 Ss+ tty2 0:00 /sbin/mingetty /dev/tty2
0 1286 0000000000000000 0000000000000000 0000000000000000 0000000000000000 Ss+ tty3 0:00 /sbin/mingetty /dev/tty3
[root@84-monitor monitor]# ps -yl
S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD
R 0 9619 12642 0 80 0 936 27023 - pts/3 00:00:00 ps
S 0 12642 12638 0 80 0 2000 27108 wait pts/3 00:00:00 bash
===============================================
15:50:33 7 ~:#man top
top詳解
top界面介紹
摘要區域 summary area
任務區域 task area
主界面按數字1若是有多個cpu核心,逐個顯示
主界面按字母l第一行開關,t接下來兩行開關,m內存兩行開關
ALTERNATE-DISPLAY Mode 輪流顯示模式 經過A(shift+a)同時顯示4個字段組,分別是1-def,2-job,3-mem,4-usr。用a或w來進行選擇,選中以後,-/+進行關閉或打開,可獨立關閉某一個字段組
full-screen mode 全屏模式 整個屏幕表明單個窗口,可是能夠更改爲4個不一樣的字段組filed groups,經過G(shift+g)交互式命令來選擇1,2,3,4。
FIELDS / Columns
f或o交互命令,’f’ (Fields select) or ´o’ (Order fields)
top命令 字段解釋: PID:進程的ID USER:進程全部者 PR:進程的優先級別,越小越優先被執行 NInice:值 VIRT:進程佔用的虛擬內存 RES:進程佔用的物理內存 SHR:進程使用的共享內存 S:進程的狀態。S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值爲負數 %CPU:進程佔用CPU的使用率 %MEM:進程使用的物理內存和總內存的百分比 TIME+:該進程啓動後佔用的總的CPU時間,即佔用CPU使用時間的累加值。 COMMAND:進程啓動命令名稱 子命令: P:按%CPU使用率排行 T:按TIME+排行 M:按%MEM排行 字段: f 選擇字段 選擇顯示列:執行top命令後,按 f 鍵,再按某一列的表明字母,便可選中或取消顯示; o 排序字段 列顯示位置調整:執行top命令後,按 o 鍵,選擇要調整位置的列(如K:CUP Usageage),按動一下大寫K則顯示位置往上調整,按動一下小寫K則顯示位置往下調整。 F或者O 列排序 執行top命令後,按 shift + f(小寫)或o(小寫),兩者等同。進入選擇排序列頁面,再按要排序的列的表明字母便可; 排序,默認是按cpu排序,>左移一列排序,shift+r反向,<右移一列排序。 只顯示asterisk及其線程的top顯示。 top -H -p `pidof asterisk`
centos7-top %MEM -- Memory Usage (RES) A task's currently used share of available physical memory. CODE -- Code Size (KiB) The amount of physical memory devoted to executable code, also known as the Text Resident Set size or TRS. DATA -- Data + Stack Size (KiB) The amount of physical memory devoted to other than executable code, also known as the Data Resi‐ dent Set size or DRS. VIRT -- Virtual Memory Size (KiB) The total amount of virtual memory used by the task. It includes all code, data and shared libraries plus pages that have been swapped out and pages that have been mapped but not used. SWAP -- Swapped Size (KiB) The non-resident portion of a task's address space. RES -- Resident Memory Size (KiB) The non-swapped physical memory a task is using. SHR -- Shared Memory Size (KiB) The amount of shared memory available to a task, not all of which is typically resident. It sim‐ ply reflects memory that could be potentially shared with other processes. centos6-top %MEM -- Memory usage (RES) A task’s currently used share of available physical memory. CODE -- Code size (kb) The amount of physical memory devoted to executable code, also known as the ’text resi- dent set’ size or TRS. DATA -- Data+Stack size (kb) The amount of physical memory devoted to other than executable code, also known as the ’data resident set’ size or DRS. VIRT -- Virtual Image (kb) The total amount of virtual memory used by the task. It includes all code, data and shared libraries plus pages that have been swapped out. (Note: you can define the STAT- SIZE=1 environment variable and the VIRT will be calculated from the /proc/#/state VmSize field.) VIRT = SWAP + RES. SWAP -- Swapped size (kb) The swapped out portion of a task’s total virtual memory image. RES -- Resident size (kb) The non-swapped physical memory a task has used. RES = CODE + DATA. SHR -- Shared Mem size (kb) The amount of shared memory used by a task. It simply reflects memory that could be potentially shared with other processes.
====================================================
[root@cu-dbs-154 ~]# rpm -qf /usr/bin/slabtop
procps-3.2.8-36.el6.x86_64
slabtop
default sort criteria is to sort by the number of objects ("o"). The sort criteria can also be changed while slabtop is running by pressing the associated character. a: sort by number of active objects b: sort by objects per slab c: sort by cache size l: sort by number of slabs v sort by number of active slabs n: sort by name o: sort by number of objects p: sort by pages per slab s: sort by object size u: sort by cache utilization