linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含義 linuxpstop http://javawind.net/p131 VIRT:virtual memory usage 虛擬內存 1、進程“需要的”虛擬內存大小,包括進程使用的庫、代碼、數據等 2、假如進程申請100m的內存,但實際只使用了10m,那么它會增長100m,而不是實際的使用量 RES:resident memory usage 常駐內存 1、進程當前使用的內存大小,但不包括swap out 2、包含其他進程的共享 3、如果申請100m的內存,實際使用10m,它只增長10m,與VIRT相反 4、關於庫占用內存的情況,它只統計加載的庫文件所占內存大小 SHR:shared memory 共享內存 1、除了自身進程的共享內存,也包括其他進程的共享內存 2、雖然進程只使用了幾個共享庫的函數,但它包含了整個共享庫的大小 3、計算某個進程所占的物理內存大小公式:RES – SHR 4、swap out后,它將會降下來 DATA 1、數據占用的內存。如果top沒有顯示,按f鍵可以顯示出來。 2、真正的該程序要求的數據空間,是真正在運行中要使用的。 top 運行中可以通過 top 的內部命令對進程的顯示方式進行控制。內部命令如下: s – 改變畫面更新頻率 l – 關閉或開啟第一部分第一行 top 信息的表示 t – 關閉或開啟第一部分第二行 Tasks 和第三行 Cpus 信息的表示 m – 關閉或開啟第一部分第四行 Mem 和 第五行 Swap 信息的表示 N – 以 PID 的大小的順序排列表示進程列表 P – 以 CPU 占用率大小的順序排列進程列表 M – 以內存占用率大小的順序排列進程列表 h – 顯示幫助 n – 設置在進程列表所顯示進程的數量 q – 退出 top s – 改變畫面更新周期 序號 列名 含義 a PID 進程id b PPID 父進程id c RUSER Real user name d UID 進程所有者的用戶id e USER 進程所有者的用戶名 f GROUP 進程所有者的組名 g TTY 啟動進程的終端名。不是從終端啟動的進程則顯示為 ? h PR 優先級 i NI nice值。負值表示高優先級,正值表示低優先級 j P 最后使用的CPU,僅在多CPU環境下有意義 k %CPU 上次更新到現在的CPU時間占用百分比 l TIME 進程使用的CPU時間總計,單位秒 m TIME+ 進程使用的CPU時間總計,單位1/100秒 n %MEM 進程使用的物理內存百分比 o VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES p SWAP 進程使用的虛擬內存中,被換出的大小,單位kb。 q RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA r CODE 可執行代碼占用的物理內存大小,單位kb s DATA 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb t SHR 共享內存大小,單位kb u nFLT 頁面錯誤次數 v nDRT 最后一次寫入到現在,被修改過的頁面數。 w S 進程狀態。(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程) x COMMAND 命令名/命令行 y WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名 z Flags 任務標志,參考 sched.h 默認情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。 通過 f 鍵可以選擇顯示的內容。按 f 鍵之后會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最后按回車鍵確定。 按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最后按回車鍵確定。 按大寫的 F 或 O 鍵,然后按 a-z 可以將進程按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。 http://blog.chinaunix.net/uid-22858177-id-381533.html Linux中ps與top命令 這兩個命令都是查看系統進程信息的命令,但是用處有點兒不同 1.ps命令–提供系統過去信息的一次性快照 也就是說ps命令能夠查看剛剛系統的進程信息 命令:ps aux或者ps lax [root@Linux ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.1 2032 644 ? Ss 21:55 0:01 init [3] root 2 0.0 0.0 0 0 ? S 21:55 0:00 [migration/0] root 3 0.0 0.0 0 0 ? SN 21:55 0:00 [ksoftirqd/0] …… 解釋如下: VSZ–進程的虛擬大小 RSS–駐留集的大小,可以理解為內存中頁的數量 TTY–控制終端的ID STAT–也就是當前進程的狀態,其中S-睡眠,s-表示該進程是會話的先導進程,N-表示進程擁有比普通優先級更低的優先級,R-正在運行,D-短期等待,Z-僵死進程,T-被跟蹤或者被停止等等 STRAT–這個很簡單,就是該進程啟動的時間 TIME–進程已經消耗的CPU時間,注意是消耗CPU的時間 COMMOND–命令的名稱和參數 而]#ps lax 可以看到父進程,謙讓值以及該進程正在等待的資源等待 2.top命令–這個命令就很有用了 top命令反應的是系統進程動態信息,默認10s更新一次 [root@Linux ~]#top top – 22:30:58 up 35 min, 1 user, load average: 0.12, 0.07, 0.08 Tasks: 72 total, 1 running, 71 sleeping, 0 stopped, 0 zombie Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 373320k total, 88600k used, 284720k free, 9956k buffers Swap: 514072k total, 0k used, 514072k free, 45092k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3217 root 15 0 2160 976 788 R 1 0.3 0:00.07 top 1 root 15 0 2032 644 552 S 0 0.2 0:01.55 init 2 root RT 0 0 0 0 S 0 0.0 0:00.02 migration/0 3 root 34 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/0 4 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/0 5 root RT 0 0 0 0 S 0 0.0 0:00.02 migration/1 6 root 39 19 0 0 0 S 0 0.0 0:00.00 ksoftirqd/1 7 root RT 0 0 0 0 S 0 0.0 0:00.00 watchdog/1 …… 以上就是top命令的部分輸出,可以看到該命令顯示了較為詳細的信息 頂部始終顯示的是系統當前最活躍的進程,此時還可以接受用戶的鍵盤輸入向進程發送信號等待 3.ps和top都是從/proc目錄下讀取進程的狀態信息,內核把當前系統進程的各種有用信息都放在這個偽目錄下。 Linux查看進程/子進程/線程信息 查看進程ID: [root@QLB data]# ps -ef | grep mysqld | grep -v "grep" root 3988 1 0 Feb20 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --user=mysql mysql 4256 3988 2 Feb20 ? 01:08:10 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/usr/local/mysql/data/QLB.err --pid-file=/usr/local/mysql/data/QLB.pid --socket=/tmp/mysqld.sock --port=3306 查看某個進程的所有線程: [root@QLB data]# ps mp 4256 -o THREAD,tid USER %CPU PRI SCNT WCHAN USER SYSTEM TID mysql 2.5 - - - - - - mysql 0.0 24 - - - - 4256 mysql 0.0 14 - futex_ - - 4258 mysql 0.0 23 - futex_ - - 4259 mysql 0.0 24 - futex_ - - 4260 mysql 0.0 24 - futex_ - - 4261 mysql 0.0 23 - futex_ - - 4262 mysql 0.0 24 - futex_ - - 4263 mysql 0.0 24 - futex_ - - 4264 mysql 0.0 24 - futex_ - - 4265 mysql 0.0 24 - futex_ - - 4266 mysql 0.0 24 - futex_ - - 4267 mysql 0.0 24 - futex_ - - 4269 mysql 0.0 24 - futex_ - - 4270 mysql 0.0 21 - futex_ - - 4271 mysql 0.0 24 - futex_ - - 4272 mysql 0.0 20 - - - - 4273 查看進程樹: [root@QLB data]# pstree -p 3988 mysqld_safe(3988)───mysqld(4256)─┬─{mysqld}(4258) ├─{mysqld}(4259) ├─{mysqld}(4260) ├─{mysqld}(4261) ├─{mysqld}(4262) ├─{mysqld}(4263) ├─{mysqld}(4264) ├─{mysqld}(4265) ├─{mysqld}(4266) ├─{mysqld}(4267) ├─{mysqld}(4269) ├─{mysqld}(4270) ├─{mysqld}(4271) ├─{mysqld}(4272) └─{mysqld}(4273) 查看某個進程的狀態信息: [root@QLB data]# cat /proc/4256/status Name: mysqld State: S (sleeping) SleepAVG: 98% Tgid: 4256 Pid: 4256 PPid: 3988 TracerPid: 0 Uid: 102 102 102 102 Gid: 501 501 501 501 FDSize: 512 Groups: 501 VmPeak: 410032 kB VmSize: 410032 kB VmLck: 0 kB VmHWM: 204356 kB VmRSS: 199920 kB VmData: 372332 kB VmStk: 88 kB VmExe: 8720 kB VmLib: 3544 kB VmPTE: 608 kB StaBrk: 0ed3d000 kB Brk: 136ae000 kB StaStk: 7fff2268a570 kB Threads: 16 SigQ: 0/69632 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000087007 SigIgn: 0000000000001006 SigCgt: 00000001800066e9 CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 Cpus_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f Mems_allowed: 00000000,00000001 Linux User’s Manual上的ps的使用例子: 1. To see every process on the system using standard syntax: ps -e ps -ef ps -eF ps -ely 2. To see every process on the system using BSD syntax: ps ax ps axu 3. To print a process tree: ps -ejH ps axjf 4. To get info about threads: ps -eLf ps axms 5. To get security info: ps -eo euser,ruser,suser,fuser,f,comm,label ps axZ ps -eM 6. To see every process running as root (real & effective ID) in user format: ps -U root -u root u 7. 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 8. Print only the process IDs of syslogd: ps -C syslogd -o pid= 9. Print only the name of PID 42: ps -p 42 -o comm= Posted in Linux/Unix. Comments are closed. 首先,得到進程的pid: ps -ef | grep process_name | grep -v “grep” | awk ‘{print $2}’ 查看進程的所有線程 # ps mp 6648 -o THREAD,tid USER %CPU PRI SCNT WCHAN USER SYSTEM TID root 0.0 – - – - – - root 0.0 24 – - – - 6648 root 0.0 21 – - – - 6650 root 1.0 24 – - – - 14214 root 0.0 23 – futex_ – - 14216 root 0.0 22 – 184466 – - 15374 root 0.0 23 – 184466 – - 15376 root 0.0 23 – 184466 – - 15378 root 0.0 23 – 184466 – - 15380 root 0.0 23 – 184466 – - 15392 root 0.0 23 – 184466 – - 15394 root 0.0 23 – 184466 – - 15398 查看所有子進程: # pstree -p 6648 agent_executor(6648)─┬─tar(15601)───gzip(15607) ├─{agent_executor}(6650) ├─{agent_executor}(14214) ├─{agent_executor}(14216) ├─{agent_executor}(15374) ├─{agent_executor}(15376) ├─{agent_executor}(15378) ├─{agent_executor}(15380) ├─{agent_executor}(15392) ├─{agent_executor}(15394) └─{agent_executor}(15398) 查看/proc/pid/status可以看到一些進程的當前狀態: Name: bash State: S (sleeping) SleepAVG: 98% Tgid: 11237 Pid: 11237 PPid: 11235 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 256 Groups: 0 1 2 3 4 6 10 VmPeak: 66260 kB VmSize: 66228 kB VmLck: 0 kB VmHWM: 1684 kB VmRSS: 1684 kB VmData: 456 kB VmStk: 88 kB VmExe: 712 kB VmLib: 1508 kB VmPTE: 68 kB StaBrk: 008c3000 kB Brk: 011b1000 kB StaStk: 7fff8b728170 kB Threads: 1 SigQ: 1/30222 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000010000 SigIgn: 0000000000384004 SigCgt: 000000004b813efb CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff Cpus_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000003 Mems_allowed: 1 http://hi.baidu.com/shiqyn/item/03fbc1382a7fe523b2c0c5b7 一、PS命令:$ ps PID TTY TIME CMD 6986 pts/5 00:00:00 bash 7975 pts/5 00:00:00 ps· PID是進程的標識號。 · TTY是進程所屬的終端控制台。 · TIME列是進程所使用的總的CPU時間。 · CMD列列出正在執行的命令行。 使用帶有-ef選項的ps,返回系統中所有用戶的所有進程的完整列表。一般將此ps命令的結果傳送到grep中,則該結果更易於查看。例如: $ ps -ef | grep chenxj UID PID PPID C STIME TTY TIME CMD root 4011 2776 0 11:02 ? 00:00:00 sshd: chenxj [priv] chenxj 4117 4011 0 11:02 ? 00:00:00 sshd: chenxj@pts/2 chenxj 4141 4117 0 11:02 pts/2 00:00:00 -bash chenxj 4208 4141 0 11:02 pts/2 00:00:00 /bin/bash /bin/s root 4811 4210 0 12:12 pts/2 00:00:00 grep chenxj -e :在命令執行后顯示環境 -f :完整顯示輸出 · 標為C的列是由CPU用於計算執行優先級的因子。 · STIME是指進程的啟動時間。 · 問號表示這些進程不屬於任何TTY,因為它們是由系統啟動的。 主要參數說明: 1)進程用戶ID(UID), 雖然uid通常是指數字型的標識,但在第一列下指定的是用戶名,標記為UID 2)進程ID(PID) 3)父進程ID(PPID) PPID是父進程的標識號。 4) CPU調度情況(C) 即是是由CPU用於計算執行優先級的因子。 5)進程啟動的時間(STIME) 6)進程共占用CPU的時間(TIME) 7)啟動進程的命令(CMD) 8)問號表示這些進程不屬於任何TTY,因為它們是由系統啟動的。 使用PS命令分析系統性能的方法主要有: 1)首先,根據用戶ID尋找由同一用戶執行的許多相似任務,這些任務很可能是因為用戶運行的某個腳本程序在后台啟動多個進程而造成的。 2)接下來,檢查TIME域中各進程累計占用CPU的時間,如果有某個進程累計占用了大量的CPU時間,通常說明該進程可能陷入了無限循環,或該進程的某些邏輯出了錯 3)找到那些已陷入死鎖的進程ID后,就可以使用kill命令強制終止該進程了。 二、TOP命令: top – 12:17:59 up 1:24, 3 users, load average: 0.06, 0.04, 0.00 Tasks: 88 total, 2 running, 86 sleeping, 0 stopped, 0 zombie Cpu(s): 0.0% us, 0.0% sy, 0.0% ni, 100.0% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 1024180k total, 537708k used, 486472k free, 56528k buffers Swap: 0k total, 0k used, 0k free, 255732k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 16 0 1980 544 468 S 0.0 0.1 0:01.43 init 2 root RT 0 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 5 -10 0 0 0 S 0.0 0.0 0:00.06 events/0 統計信息區 前五行是系統整體的統計信息。第一行是任務隊列信息,同 uptime 命令的執行結果。其內容如下: 12:17:59 當前時間 up 1:24 系統運行時間,格式為時:分 3 user 當前登錄用戶數 load average: 0.06, 0.04, 0.00 系統負載,即任務隊列的平均長度。 三個數值分別為 1分鍾、5分鍾、15分鍾前到現在的平均值。 第二、三行為進程和CPU的信息。當有多個CPU時,這些內容可能會超過兩行。內容如下: Tasks: 88 total 進程總數 2 running 正在運行的進程數 86 sleeping 睡眠的進程數 0 stopped 停止的進程數 0 zombie 僵屍進程數 Cpu(s): 0.0% us 用戶空間占用CPU百分比 0.0% sy 內核空間占用CPU百分比 0.0% ni 用戶進程空間內改變過優先級的進程占用CPU百分比 100.0 id 空閑CPU百分比 0.0% wa 等待輸入輸出的CPU時間百分比 0.0% hi 0.0% si 最后兩行為內存信息。內容如下: Mem: 1024180k total 物理內存總量 537708k used 使用的物理內存總量 486472k free 空閑內存總量 56528k buffers 用作內核緩存的內存量 Swap: 0k total 交換區總量 0k used 使用的交換區總量 0k free 空閑交換區總量 255732k cached 緩沖的交換區總量。 內存中的內容被換出到交換區,而后又被換入到內存,但使用過的交換區尚未被覆蓋, 該數值即為這些內容已存在於內存中的交換區的大小。 相應的內存再次被換出時可不必再對交換區寫入。 進程信息區 統計信息區域的下方顯示了各個進程的詳細信息。首先來認識一下各列的含義。 序號 列名 含義 PID : 進程id PPID : 父進程id RUSER : Real user name UID : 進程所有者的用戶id USER : 進程所有者的用戶名 GROUP : 進程所有者的組名 TTY : 啟動進程的終端名。不是從終端啟動的進程則顯示為 ? PR : 優先級 NI : nice值。負值表示高優先級,正值表示低優先級 P : 最后使用的CPU,僅在多CPU環境下有意義 %CPU : 上次更新到現在的CPU時間占用百分比 TIME : 進程使用的CPU時間總計,單位秒 TIME+ : 進程使用的CPU時間總計,單位1/100秒 %MEM : 進程使用的物理內存百分比 VIRT : 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES SWAP : 進程使用的虛擬內存中,被換出的大小,單位kb。 RES : 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA CODE : 可執行代碼占用的物理內存大小,單位kb DATA : 可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb SHR : 共享內存大小,單位kb nFLT : 頁面錯誤次數 nDRT : 最后一次寫入到現在,被修改過的頁面數。 S : 進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程 COMMAND : 命令名/命令行 WCHAN : 若該進程在睡眠,則顯示睡眠中的系統函數名 Flags : 任務標志,參考 sched.h 默認情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。 更改顯示內容 通過 f 鍵可以選擇顯示的內容。按 f 鍵之后會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最后按回車鍵確定。 按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最后按回車鍵確定。 按大寫的 F 或 O 鍵,然后按 a-z 可以將進程按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。 命令使用 1. 工具(命令)名稱 top 2.工具(命令)作用 顯示系統當前的進程和其他狀況; top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前台執行該命令,它將獨占前台,直到用戶終止該程序為止. 比較准確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最“敏感”的任務列表.該命令可以按CPU使用.內存使用和執行時間對任務進行排序;而且該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設定. 3.環境設置 在Linux下使用。 4.使用方法 4.1使用格式 top [-] [d] [p] [q] [c] [C] [S] [s] [n] 4.2參數說明 d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。 p 通過指定監控進程ID來僅僅監控某個進程的狀態。 q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那么top將以盡可能高的優先級運行。 S 指定累計模式 s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。 i 使top不顯示任何閑置或者僵死進程。 c 顯示整個命令行而不只是顯示命令名 4.3其他 下面介紹在top命令執行過程中可以使用的一些交互命令。從使用角度來看,熟練的掌握這些命令比掌握選項還重要一些。這些命令都是單字母的,如果在命令行選項中使用了s選項,則可能其中一些命令會被屏蔽掉。 Ctrl+L 擦除並且重寫屏幕。 h或者? 顯示幫助畫面,給出一些簡短的命令總結說明。 k 終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什么樣的信號。一般的終止進程可以使用15信號;如果不能正常結束那就使用信號9強制結束該進程。默認值是信號15。在安全模式中此命令被屏蔽。 i 忽略閑置和僵死進程。這是一個開關式命令。 q 退出程序。 r 重新安排一個進程的優先級別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先級值。輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先權。默認值是10。 S 切換到累計模式。 s 改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位為s。如果有小數,就換算成m s。輸入0值則系統將不斷刷新,默認值是5 s。需要注意的是如果設置太小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。 f或者F 從當前顯示中添加或者刪除項目。 o或者O 改變顯示項目的順序。 l 切換顯示平均負載和啟動時間信息。 m 切換顯示內存信息。 t 切換顯示進程和CPU狀態信息。 c 切換顯示命令名稱和完整命令行。 M 根據駐留內存大小進行排序。 P 根據CPU使用百分比大小進行排序。 T 根據時間/累計時間進行排序。 W 將當前設置寫入~/.toprc文件中。 轉載自:http://blog.csdn.net/zjc156m/article/details/38920321