Home | 简体中文 | 繁体中文 | 杂文 | 知乎专栏 | Github | OSChina 博客 | 云社区 | 云栖社区 | Facebook | Linkedin | 视频教程 | 打赏(Donations) | About
知乎专栏多维度架构

第 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