淺談Linux系統中如何查看進程 ——ps,pstree,top,w,全解



  進程是一個其中運行着一個或多個線程的地址空間和這些線程所需要的系統資源。一般來說,Linux系統會在進程之間共享程序代碼和系統函數庫,所以在任何時刻內存中都只有代碼的一份拷貝。

  1,ps命令

  作用:ps命令主要用於查看系統中進程的狀態。

  用法:ps [選項]

  主要選項如下:

  -e 顯示所有進程

  -a 跟終端無關的進程 (BSD風格,不加橫桿)

  -x 跟終端有關的進程

  -u 發起者

  -F 額外信息

  -f 顯示完整信息

  -j 以作業的方式顯示進程

  -H 顯示進程的關系

  -o 自定義顯示哪些字段

  單一的命令往往顯示的結果不是很理想,這里我們可以多個選項同時使用。

  例:ps aux 命令可以獲得終端上所有用戶的有關進程的所有信息

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

  root 1 0.0 0.1 2064 652 ? Ss 10:05 0:00 init [3]

  其中VSZ 虛擬地址大小

  RSS 物理內存大小

  例:例:ps ax

  pid tty stat time command

  1 ? Ss 0:00 init [3]

  其中 tty中?表示與終端無關

  stat(狀態)

  D 不可中斷 sleep

  S 可中斷 sleep

  R 正在運行或可運行的

  T 停止態

  Z 僵屍態 父進程替子進程收屍

  父進程死的時候會先替子進程找到另外一個父進程

  x 死亡狀態

  w paging

  狀態的變化:stoped--sleep--ready--running

  注:sleep (可中斷sleep 和不可中斷sleep)

  PID 這個進程的ID,下面的PPID為父進程的ID

  在BSD中也會有:

  < 表示高優先級的進程

  N 低優先級

  + 屬於某個前台組的進程

  s 某一個回話的leader進程

  l 線程加鎖

  + 后台運行進程組

  例:ps -l

  [root@station100 ~]# ps -l

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

  4 S 0 9706 9704 0 75 0 - 1166 wait pts/1 00:00:00 bash

  4 R 0 9908 9706 0 77 0 - 1052 - pts/1 00:00:00 ps

  F:表示這個進程的標志(flag),4表示用戶為超級用戶。

  S:表示這個進程的狀態(STAT)。

  PID:這個進程的ID,下面的PPID為父進程的ID。

  C:CPU使用的資源百分比

  PRI:Priority(優先級)的縮寫。

  NI:Nice值

  ADDR 這是核心功能,指出該進程在內存的那一部分,如果是運行的進程一般都是“-”

  SZ:用掉的內存大小

  WCHAN 當前進程是否正在運行,若為“-”表示正在運行。

  TTY:登錄者的終端位置。

  TIME:用掉的CPU時間。

  CMD 所執行的命令。

  例:ps auxw --sort=rss

  按內存占用情況對進程排序

  例:ps auxw --sort=%cpu

  在進行系統維護時,如果CPU負載突然增加,而又不知道是哪一個進程造成的

  其他部分ps命令:

  To see every process on the system using standard syntax:

  ps -e

  ps -ef

  ps -eF 顯示PID及PPID信息

  ps -ely 會顯示nice值NI及優先級PRI

  To see every process on the system using BSD syntax:

  ps ax

  ps axu

  To print a process tree:

  ps -ejH

  ps axjf 相當於ps -aFH或afh 顯示進程關系

  To get info about threads

  ps -eLf

  ps axms

  To get security info:

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

  ps axZ

  ps -eM

  To see every process running as root (real & effective ID) in user format:

  ps -U root -u root 自定義顯示格式

  To see every process with a user-defined format:

  ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

  ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

  ps -eopid,tt,user,fname,tmout,f,wchan

  Print only the process IDs of syslogd:

  ps -C syslogd -o pid=

  Print only the name of PID 42:

  ps -p 42 -o comm=

  2,pstree:顯示進程狀態樹

  作用:pstree命令列出當前的進程,以及它們的樹狀結構。

  用法:pstree [選項] [pid|user]

  主要選項如下。

  -a:顯示執行程序的命令與完整參數。

  -c:取消同名程序,合並顯示。

  -h:對輸出結果進行處理,高亮顯示正在執行的程序。

  -l:以長用法顯示。

  -n:以PID大小排序。

  -p:顯示PID。

  -u:顯示UID信息。

  -G:使用VT100終端編碼顯示,生成比較清晰的樹

  -U:使用UTF-8(Unicode)編碼顯示。

  它能將當前的執行程序以樹狀結構顯示。pstree命令支持指定特定程序(PID)或使用者(USER)作為顯示的起始。

  3,top:顯示進程

  作用:top命令用來顯示系統當前的進程狀況。

  用法:top [選項]

  主要選項如下。

  -b:以批處理的方式執行top,通常會搭配數據流重導向,將批處理的結果輸出為文件。

  -c:顯示程序並顯示程序的完整相關信息,如名稱、路徑等。

  -i:忽略閑置或已經凍結的程序。

  -d:后面可以接秒數,就是整個進程畫面更新的秒數,默認是5秒。

  -n:與-b搭配,需要進行幾次top的輸出結果。

  -p<進程號>:指定某些個PID來進行觀察檢測。

  -s:安全模式。

  -u:指定用戶名。

  -v:顯示版本信息。

  -h:顯示幫助信息。

  top命令和ps命令的基本作用是相同的,都是顯示系統當前的進程狀況。但是top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態。

  例:top

  top - 19:21:34 up 9:15, 3 users, load average: 0.00, 0.00, 0.00

  Tasks: 80 total, 1 running, 79 sleeping, 0 stopped, 0 zombie

  Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.0%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st

  Mem: 515444k total, 360684k used, 154760k free, 99876k buffers

  Swap: 1048568k total, 0k used, 1048568k free, 214912k cached

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

  9954 root 15 0 2196 992 804 R 0.3 0.2 0:00.05 top

  1 root 15 0 2064 620 536 S 0.0 0.1 0:04.26 init

  2 root RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0

  3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0

  4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0

  第一行表示的項目依次為當前時間、系統啟動時間、當前系統登錄用戶數目、平均負載。

  第二行顯示的是所有啟動的、目前運行的、掛起(Sleeping)的和無用(Zombie)的進程。

  第三行顯示的是目前CPU的使用情況。

  第四行顯示物理內存的使用情況,包括總的可以使用的內存、已用內存、空閑內存、緩沖區占用的內存。

  第五行顯示交換分區的使用情況,包括總的、使用的、空閑的和用於高速緩存的交換分區。

  第六行顯示的項目最多,下面列出了詳細解釋。

  PID(Process ID):進程標志號,是非零正整數。

  USER:進程所有者的用戶名。

  PR:進程的優先級別。

  NI:進程的優先級別數值。

  VIRT:進程占用的虛擬內存值。

  RES:進程占用的物理內存值。

  SHR:進程使用的共享內存值。

  STAT:進程的狀態,其中S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值是負數

  %CPU:該進程占用的CPU使用率。

  %MEM:該進程占用的物理內存和總內存的百分比。

  TIME:該進程啟動后占用的總的CPU時間。

  COMMAND:進程啟動的啟動命令名稱,如果這一行顯示不下,進程會有一個完整的命令行。

  在top執行過程中可以使用的按鍵命令:

  ?:顯示在top中可以輸入的按鍵命令。

  <空格>:立刻刷新。

  P:按CPU的使用資源排序顯示。

  T:該進程使用的CPU時間累積(TIME+)排序。

  m:切換顯示內存信息。

  t:切換顯示進程和CPU狀態信息。

  c:切換顯示命令名稱和完整命令行。

  M:按內存的使用資源排序顯示。

  N:按PID來排序

  W:將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。

  r:給某個PID重新確定一個值。

  q:退出top命令。

  top命令是一個功能十分強大的監控系統的工具,對於系統管理員而言尤其重要。但是,它的缺點是會消耗很多系統資源。

  例:top -c

  顯示程序及其完整相關信息

  例:top -d 3

  設定top命令的時間間隔為3秒

  例:top -n 5

  設定系統任務信息更新5次后結束top命令

  4,who

  作用:該命令主要用於查看當前在線上的用戶情況。

  who命令的常用參數進行說明。

  -m 和“who am i”的作用一樣,顯示運行該程序的用戶名。

  -q,--count 只顯示用戶的登錄帳號和登錄用戶的數量,該選項優先級高於其他任何選項。

  -s 忽略。主要是用於和其他版本的who命令兼容。

  -i,-u,--idle 在登錄時間后面顯示該用戶最后一次對系統進行操作至今的時間,也就是常說的“發呆”時間。

  -H,--heading 顯示一行列標題

  5,w命令

  該命令也用於顯示登錄到系統的用戶情況,但是與who不同的是,w命令功能更加強大,它不但可以顯示有誰登錄到系統,還可以顯示出這些用戶當前正在進行的工作,並且統計數據相對who命令來說更加詳細和科學,可以認為w命令就是who命令的一個增強版。

  相應參數進行說明:

  -h 不顯示標題。

  -u 當列出當前進程和CPU時間時忽略用戶名。這主要是用於執行su命令后的情況。

  -s 使用短模式。不顯示登錄時間、JCPU和PCPU時間。

  -f 切換顯示FROM項,也就是遠程主機名項。默認值是不顯示遠程主機名,當然系統管理員可以對源文件作一些修改使得顯示該項成為默認值。

  -V 顯示版本信息。

  6,其他配合使用的命令

  pgrep -G root 顯示所有的pid

  pidof cupsd 獲取某個進程的pid(cupsd為一個進程名)

  free -m 查看虛擬內存的使用情況

  kill 進程號 默認信號是15

  killall 進程名

  例:killall httpd

  pkill SINGAL pattern

  7,nice值及優先級

  靜態優先級:100-139 ,可以調整

  動態優先級:0-99 數字小優先級小 (實時優先級)

  手動調整,nice(-20 - 19)默認為零 把自己的優先級降低(普通用戶)

  可以隨意調整自己的優先級(root管理者)

  nice 啟動進程時直接指定nice值

  nince -n 6 COMMAND

  renice:對已經啟動過的進程調整其nice值

  renice -5 423 (-5為nice值,優先級,423為進程號)

  8,作業控制(job)

  實際中是:shell結束 作業也結束

  使用&后: shell結束 作業不結束

  例:nohup cp -r /etc /tmp/abc &

  shell結束,作業不結束

  ctrl+z 把job送到后台 stoped狀態

  & 在后台也在運行

  fg 調用到前台

  jobs 查看在后台的作業

  fg 默認調用的是帶+號的作業,調用后台job

  ps aux | ls 查看ls的id

  bg %2 2為作業號

  kill %2 直接殺死作業 顯示已終止

  kill -9 %2 直接殺死 顯示已殺死

原文出自【比特網】,轉載請保留原文鏈接:http://soft.chinabyte.com/os/283/12130783.shtml


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM