天天看點

【ps】檢視程序

【ps】檢視程序

# ps aux | less  //顯示所有運作中的程序

其中 

-A: 顯示所有程序

a:顯示終端中包括其他使用者的所有程序

x:顯示無控制終端的程序

任務:檢視系統中的每個程序。

# ps -A

# ps -e任務:檢視非root運作的程序

# ps -U root -u root -N任務:檢視使用者vivek運作的程序

# ps -u vivek任務:top指令

top指令提供了運作中系統的動态實時視圖。在指令提示行中輸入top:

按q退出,按h進入幫助。

任務:顯示程序的樹狀圖。

pstree以樹狀顯示正在運作的程序。樹的根節點為pid或init。如果指定了使用者名,程序樹将以使用者所擁有的程序作為根節點。

$ pstree

任務:使用ps列印程序樹

# ps -ejH

# ps axjf任務:獲得線程資訊

輸入下列指令:

# ps -eLf

# ps axms任務:獲得安全資訊

輸入下列指令:

# ps -eo euser,ruser,suser,fuser,f,comm,label

# ps axZ

# ps -eM任務:将程序快照儲存到檔案中

輸入下列指令:

# top -b -n1 > /tmp/process.log你也可以将結果通過郵件發給自己:

# top -b -n1 | mail -s 'Process snapshot' [email protected]任務:查找程序

使用pgrep指令。pgrep能查找目前正在運作的程序并列出符合條件的程序ID。例如顯示firefox的程序ID:

$ pgrep firefox下面指令将顯示程序名為sshd、所有者為root的程序。

$ pgrep -u root sshd

-----------------------------------------------------------------------------

【ps】Process State 檢視程序

SysV風格:-

BSD風格:不加-

ps:預設顯示前台程序

參數:

     BSD風格

【a】:顯示所有與終端有關的程序

【u】

【s】:顯示與終端無關的程序

     SysV風格

【-e】:所有程序

【-l】:相當于u

【-F】:相當于s

【-o】:顯示指定字段

ps -o PROPERTY1,PROPERTY2

例如: ps -o pid,comm,ni

ps -axo pid,comm,ni

如果隻指定字段,不指定顯示那些程序,通常會顯示ps的預設程序。

ps:預設顯示前台程序

ps 

-elF

-ef

-eF

--------------------------------字段介紹--------------------

[[email protected] 1]# ps aux | head

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.0   2900  1448 ?        Ss   17:39   0:01 /sbin/init

root         2  0.0  0.0      0     0 ?        S    17:39   0:00 [kthreadd]

root         3  0.0  0.0      0     0 ?        S    17:39   0:00 [migration/0]

root         4  0.0  0.0      0     0 ?        S    17:39   0:00 [ksoftirqd/0]

root         5  0.0  0.0      0     0 ?        S    17:39   0:00 [migration/0]

root         6  0.0  0.0      0     0 ?        S    17:39   0:00 [watchdog/0]

root         7  0.0  0.0      0     0 ?        S    17:39   0:01 [migration/1]

root         8  0.0  0.0      0     0 ?        S    17:39   0:00 [migration/1]

root         9  0.0  0.0      0     0 ?        S    17:39   0:00 [ksoftirqd/1]

[[email protected] 1]# 

-----------------------------

USER:程序的使用者,即誰發起的這個程序

PID:程序号

%CPU:占用cpu的百分比(自己進占據cpu的使用時間與cpu的使用時間的百分比)

%MEM:占用實體記憶體的百分比

VSZ:虛拟記憶體集

RSS:常住記憶體集

TTY:關聯到那個終端,?表示與終端無關

STAT:程序狀态

TIME:時間(運作時長)

COMMAND:指令,表示那個指令啟動的該程序,如果用【[]】括起來表示是核心線程

------------------------------------字段介紹-------------------------------

[[email protected] 1]# ps -elF | head 

F S UID        PID  PPID  C PRI  NI ADDR SZ WCHAN    RSS PSR STIME TTY          TIME CMD

4 S root         1     0  0  80   0 -   725 -       1448   1 17:39 ?        00:00:01 /sbin/init

1 S root         2     0  0  80   0 -     0 -          0   1 17:39 ?        00:00:00 [kthreadd]

1 S root         3     2  0 -40   - -     0 -          0   0 17:39 ?        00:00:00 [migration/0]

1 S root         4     2  0  80   0 -     0 -          0   0 17:39 ?        00:00:00 [ksoftirqd/0]

1 S root         5     2  0 -40   - -     0 -          0   0 17:39 ?        00:00:00 [migration/0]

5 S root         6     2  0 -40   - -     0 -          0   0 17:39 ?        00:00:00 [watchdog/0]

1 S root         7     2  0 -40   - -     0 -          0   1 17:39 ?        00:00:01 [migration/1]

1 S root         8     2  0 -40   - -     0 -          0   1 17:39 ?        00:00:00 [migration/1]

1 S root         9     2  0  80   0 -     0 -          0   1 17:39 ?        00:00:00 [ksoftirqd/1]

[[email protected] 1]# 

---------------------------------------------------------------------------

PRI:優先級

NI:nice值

PSR:正在運作在那個CPU上

程序的分類:

與終端相關的程序

與終端無關的程序

程序狀态:

D:不可中斷的睡眠

R:運作或就緒

S:可中斷的睡眠

T:停止

Z:僵死

<:高優先級程序

N:低優先級程序

+:前台程序組中的程序

l:多線程程序

s:會話程序首程序

---------------------------------------------------

相關指令:

【pstree】顯示程序樹

【pgrep】按照grep查找顯示程序

例如:

pgrep -u root bash  //是root使用者的并且是bash的程序

pgrep bash //顯示所有bash程序

【pidof】指定程序名尋找其pid号

例如:

pidof /bin/bash//檢視/bin/bash程序的id号

pidof sshd

【top】動态顯示程序使用情況

【free】檢視目前系統上實體記憶體和交換分區使用情況

【kill】結束程序

【pkill】根據程序名殺死程序,與pgrep類似

前台:占據了指令提示符

背景:啟動之後,釋放指令提示符,後續的操作在背景完成。

前台---》背景:

Ctrl+z 把正在前台的作業送往背景

COMMAND &   讓指令在背景執行

【bg】讓背景停止的作業繼續運作

【jobs】檢視背景的所有作業

作業号,不同于程序号

+:指令将預設操作的作業

-:指令将第二個預設被操作的作業。

【fg】将背景的作業調回前台

fg [%JOBID]   //這裡面的%可以省略

kill %JOBID:終止某作業//這裡%不能省略

【vmstat】系統狀态檢視指令

【uptime】與top的第一行一樣

/proc/meminfo 記憶體資訊檔案

/etc/cupinfo  cpu資訊檔案

cat /proc/1/maps

可以檢視目前程序1所占據的記憶體資訊

-------------------------------附加---------------------------------------------

-o Format 以 Format 變量指定的格式顯示資訊。可以為 Format 變量指定多個字段說明符。Format 變量或者是一個由逗号分隔的字段說明符清單或是一個由“”(雙引号)引起來的之間用逗号或一個或多個空格或兩者分隔的說明符清單。

每個字段說明符有一個預設頭。通過為頭附加一個=(等号),後跟使用者定義的文本,可以覆寫預設頭。寫字段的順序采用指令行中列格式指定的方式。字段寬度由系統指定,它至少為預設的或使用者定義的頭文本寬度。如果頭文本為空,(例如如果指定 -o user=),字段寬度至少為預設頭文本寬度。如果所有頭字段都為空,不寫頭行。

系統辨別下列字段說明符:

【args】 說明正在執行的完整指令名。包含所有指令行參數,盡管可能發生截斷。該字段的預設頭為 COMMAND。

【bnd】 表示程序或核心線程綁定到哪個(如果有)處理器。該字段的預設頭為 BND。

【class】 表示為該程序配置設定的工作負荷管理類。該字段的預設頭為 CLASS。

【comm】 表示正在執行的指令的短名稱。不包含指令行參數。該字段的預設頭為 COMMAND。

【cpu】 确定程序排程優先級。每次系統時鐘周期和發現程序或線程運作時增加程序或線程的 CPU 使用率。排程程式通過每秒除 2 将該值衰減。對于 sched_other 政策,大值表示一個 CPU 密集處理且造成更低的程序優先級而小值表示一個 I/O 密集處理且造成更高的優先級。

【etime】 表示程序啟動後所用的時間。所用時間以下列格式顯示:

[[ dd-]hh:]mm:ss

其中 dd 指定天數,hh 指定小時數,mm 指定分鐘數及 ss 指定秒數。該字段的預設頭為 ELAPSED。

【group】 表示該程序的有效組辨別。顯示文本組辨別。如果不能得到文本組辨別,使用十進制表示。該字段的預設頭為 GROUP。

【nice】 表示程序細調值的十進制值。該字段的預設頭為 NI。

-o Format(續)

【pcpu】 表示使用的 CPU 時間占可用 CPU 時間的比例,以百分比表示。該字段的預設頭為 %CPU。

【pgid】 表示程序組辨別的十進制值。該字段的預設頭為 PGID。

【pid】 表示程序辨別的十進制值。該字段的預設頭為 PID。

【ppid】 表示父程序辨別的十進制值。該字段的預設頭為 PPID。

【rgroup】 表示該程序的實際組辨別。顯示文本組辨別。如果不能得到文本組辨別,使用十進制表示。該字段的預設頭為 RGROUP。

【ruser】 表示該程序的實際使用者辨別。顯示文本使用者辨別。如果不能得到文本使用者辨別,使用十進制表示。該字段的預設頭為 RUSER。

【scount】 表示核心線程的暫挂數。該字段的預設頭為 SC。

【sched】 表示核心線程的排程政策。該字段的預設頭為 SCH。

【tag】 表示工作負荷管理器應用程式标記。該字段的預設頭為 TAG。該标記為一個字元串,它不超過 30 個字元長且由 ps 顯示時可能會截斷。對于不設定标記的程序,該字段顯示為一個 -(連字元)。

【tcpu】 總 CPU 時間。訓示單個程序的總累積 CPU 時間。該字段的預設頭為 TCPU。

【tctime】 總連接配接時間。訓示登入會話可會活動時的時間總量。這僅在會話引導程序中才有意義。該字段的預設頭為 TCTIME。

【tdiskio】 總磁盤 I/O。訓示單個程序的 I/O 的總累積塊數。該字段的預設頭為 TDISKIO。

-o Format(續)

【thcount】 表示該程序擁有的核心線程數。該字段的預設頭為 THCNT。

【THREAD】 表示下列字段:

使用者名(uname 字段)

程序的程序及父程序辨別(pid 和 ppid 字段)

線程的核心線程辨別(tid 字段)

程序或核心線程的狀态(S 字段)

程序或核心線程的 CPU 使用率(C 字段)

程序或核心線程的優先級(PRI 字段)

程序或核心線程的暫挂數( scount 字段)

程序或核心線程的等待通道( WCHAN 字段)

程序或核心線程的标志(F 字段)

程序的控制終端(tty 字段)

程序或核心線程綁定到的 CPU (bnd 字段)

正在由程序執行的指令(comm 字段)

使用 -o THREAD 标志實際上不顯示線程,除非也指定 -m 标志。

【tid】 表示核心線程的線程辨別。該字段的預設頭為 TID。

【time】 表示程序啟動後的累計 CPU 時間。時間以下列格式顯示:

[ dd-]hh:mm:ss

其中 dd 指定天數,hh 指定小時數,mm 指定分鐘數及 ss 指定秒數。該字段的預設頭為 TIME。

【tty】 表示該程序的控制終端名。該字段的預設頭為 TT。

【user】 表示該程序的有效使用者辨別。顯示文本使用者辨別。如果不能得到文本使用者辨別,使用十進制表示。該字段的預設頭為 USER。

【vsz】 使用十進制整數表示虛拟記憶體中程序的大小,以千位元組為機關。該字段的預設頭為 VSZ。

-o Format(續)

否則,通過 Format 變量,可以顯示指定格式的多個字段,包括字段描述符。如果在 Format 變量中使用字段描述符,它必須包含在雙引号(" ")内。下表顯示了字段描述符如何對應字段說明符:

字段            字段            預設值

描述符          說明符          頭

%a              args            COMMAND

%c              comm            COMMAND

%t              etime           ELAPSED

%G              group           GROUP

%n              nice            NI

%C              pcpu            %CPU

%r              pgid            PGID

%p              pid             PID

%P              ppid            PPID

%g              rgroup          RGROUP

%u              ruser           RUSER

%x              time            TIME

%y              tty             TTY

%U              user            USER

%z              vsz             VSZ