linux包之procps之ps與top

概述  閱讀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

相關文章
相關標籤/搜索