Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

第 16 章 Process 進程管理

目錄

16.1. top - display Linux tasks
16.1.1. 查找內存消耗最大的進程
16.2. ps - report a snapshot of the current processes
16.2.1. 完整的顯示命令參數
16.2.2. 顯示進程之間的關係
16.2.3. ps axef
16.2.4. ps -eo pid,cmd
16.2.5. ps jax
16.2.6. 殭屍進程
16.2.7. 查找內存消耗最大的進程
16.2.8. 指定輸出項
16.3. mpstat
16.4. pid
16.4.1. pgrep, pkill - look up or signal processes based on name and other attributes
16.4.2. pidof -- find the process ID of a running program.
16.5. jobs
16.5.1. &
16.5.2. Ctrl + Z
16.5.3. jobs
16.5.4. fg / bg
16.5.5. nohup - run a command immune to hangups, with output to a non-tty
16.5.6. wait 等待後台任務運行結束
16.6. ionice - get/set program io scheduling class and priority
16.7. Utilities for managing processes on your system
16.7.1. pstree - display a tree of processes
16.7.2. fuser - identify processes using files or sockets
16.8. /proc 目錄與進程的關係
16.8.1. /proc/進程ID
16.8.2. /proc/*/fd/ 進程所打開的檔案

16.1. top - display Linux tasks

top命令算是最直觀、好用的查看伺服器負載的命令了。它實時動態刷新顯示伺服器狀態信息,且可以通過互動式命令自定義顯示內容,非常強大。

		
> 進程信息

PID:進程的ID 
USER:進程所有者 
PR:進程的優先順序別,越小越優先被執行 
NInice:值 
VIRT:進程占用的虛擬內存 
RES:進程占用的物理內存 
SHR:進程使用的共享內存 
S:進程的狀態。S表示休眠,R表示正在運行,Z表示僵死狀態,N表示該進程優先值為負數 
%CPU:進程占用CPU的使用率 
%MEM:進程使用的物理內存和總內存的百分比 
TIME+:該進程啟動後占用的總的CPU時間,即占用CPU使用時間的累加值。 
COMMAND:進程啟動命令名稱


### top交互

s:設置刷新時間間隔
c:顯示命令完全模式
t::顯示或隱藏進程和CPU狀態信息
m:顯示或隱藏內存狀態信息
l:顯示或隱藏uptime信息
f:增加或減少進程顯示標誌
S:累計模式,會把已完成或退出的子進程占用的CPU時間累計到父進程的MITE+
P:按%CPU使用率排行
T:按MITE+排行
M:按%MEM排行
u:指定顯示用戶進程
r:修改進程renice值
kkill:進程
i:只顯示正在運行的進程
W:保存對top的設置到檔案~/.toprc,下次啟動將自動調用toprc檔案的設置。
h:幫助命令。
q:退出

如果想看每一個cpu的處理情況,按1即可;摺疊,再次按1

按鍵b打開或關閉 運行中進程的高亮效果

按鍵x打開或關閉 排序列的高亮效果

shift + > 或 shift + < 可以向右或左改變排序列

f鍵,可以進入編輯要顯示欄位的視圖,有 號的欄位會顯示,無 號不顯示,可根據頁面提示選擇或取消欄位。		
		
		
		
$ top
top - 22:30:02 up 14:24,  1 user,  load average: 0.17, 0.15, 0.10
Tasks: 240 total,   2 running, 238 sleeping,   0 stopped,   0 zombie
Cpu0  :  2.0%us,  4.1%sy,  0.0%ni, 92.9%id,  1.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  1.5%us,  3.7%sy,  0.1%ni, 94.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  :  2.2%us,  5.6%sy,  0.0%ni, 92.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  2.1%us,  6.3%sy,  0.0%ni, 91.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2048012k total,  1138504k used,   909508k free,   139292k buffers
Swap:  1951856k total,        0k used,  1951856k free,   603728k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4686 neo       20   0 19264 1440  980 R   11  0.1   0:00.10 top
 4698 neo       20   0  9440 1572 1044 S   11  0.1   0:00.27 sitemaps
    6 root      RT  -5     0    0    0 S    4  0.0   0:14.38 migration/1
    1 root      20   0 19320 1600 1132 S    0  0.1   0:01.50 init
    2 root      15  -5     0    0    0 S    0  0.0   0:00.00 kthreadd
    3 root      RT  -5     0    0    0 S    0  0.0   0:10.41 migration/0
		
		

16.1.1. 查找內存消耗最大的進程

			
[root@localhost ~]# top -c -b -o +%MEM | head -n 20 | tail -15

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1457 root      20   0  661572  66732  14552 R  62.5  3.5   1:32.09 /usr/bin/python2 /usr/bin/dnf upgrade
  531 root      20   0  358748  29468   7036 S   0.0  1.5   0:00.91 /usr/bin/python2 -Es /usr/sbin/firewa+
 1042 root      20   0  574200  19552   6112 S   0.0  1.0   0:00.34 /usr/bin/python2 -Es /usr/sbin/tuned +
  491 polkitd   20   0  613016  11916   4896 S   0.0  0.6   0:00.04 /usr/lib/polkit-1/polkitd --no-debug
 1046 root      20   0  424064  11420   9052 S   0.0  0.6   0:00.09 /usr/sbin/smbd --foreground --no-proc+
  542 root      20   0  701996   9568   7052 S   0.0  0.5   0:00.41 /usr/sbin/NetworkManager --no-daemon
 1215 root      20   0  158924   5668   4336 S   0.0  0.3   0:00.06 sshd: www [priv]
 1542 root      20   0  158924   5668   4336 S   0.0  0.3   0:00.02 sshd: www [priv]
  755 root      20   0  102896   5492   3428 S   0.0  0.3   0:00.01 /sbin/dhclient -d -q -sf /usr/libexec+
 1045 root      20   0  216420   4744   3308 S   0.0  0.2   0:00.33 /usr/sbin/rsyslogd -n
  654 root      20   0   78812   4636   3640 S   0.0  0.2   0:00.04 /usr/sbin/wpa_supplicant -u -f /var/l+
 1044 root      20   0  112920   4292   3268 S   0.0  0.2   0:00.00 /usr/sbin/sshd -D
 1150 postfix   20   0   90348   4240   3160 S   0.0  0.2   0:00.00 qmgr -l -t unix -u		
			
			

僅顯示命令,不顯示參數

			
[root@localhost ~]# top -b -o +%MEM | head -n 20 | tail -15

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 1457 root      20   0  661564  66728  14552 R  43.8  3.5   2:08.37 dnf
  531 root      20   0  358748  29468   7036 S   0.0  1.5   0:00.91 firewalld
 1042 root      20   0  574200  19552   6112 S   0.0  1.0   0:00.35 tuned
  491 polkitd   20   0  613016  11916   4896 S   0.0  0.6   0:00.04 polkitd
 1046 root      20   0  424064  11420   9052 S   0.0  0.6   0:00.09 smbd
  542 root      20   0  701996   9568   7052 S   0.0  0.5   0:00.43 NetworkManager
 1215 root      20   0  158924   5668   4336 S   0.0  0.3   0:00.06 sshd
 1542 root      20   0  158924   5668   4336 S   0.0  0.3   0:00.02 sshd
  755 root      20   0  102896   5492   3428 S   0.0  0.3   0:00.01 dhclient
 1045 root      20   0  216420   4796   3360 S   0.0  0.3   0:00.35 rsyslogd
  654 root      20   0   78812   4636   3640 S   0.0  0.2   0:00.04 wpa_supplicant
 1044 root      20   0  112920   4292   3268 S   0.0  0.2   0:00.00 sshd
 1150 postfix   20   0   90348   4240   3160 S   0.0  0.2   0:00.00 qmgr