###top/htop

top是一个很有用的命令,可以监视系统中不同进程所使用的资源,它提供实时的系统状态信息,是一个综合了多方信息的监视工具,通过top命令所提供的交互式的解密,可以用热键管理。另外htop命令是加强版的top命令,但是在常用的发型版中没有默认按照,因此不做讨论。

usage: top [选项]
选项:
  -b:以批处理模式操作;
  -c:显示完整的治命令;
  -d:屏幕刷新间隔时间;
  -I:忽略失效过程;
  -s:保密模式;
  -S:累积模式;
  -i<时间>:设置间隔时间;
  -u<用户名>:指定用户名;
  -p<进程号>:指定进程;
  -n<次数>:循环显示的次数。
交互命令:
  h:显示帮助画面,给出一些简短的命令总结说明;
  k:终止一个进程;
  i:忽略闲置和僵死进程,这是一个开关式命令;
  q:退出程序;
  r:重新安排一个进程的优先级别;
  S:切换到累计模式;
  s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;
  f或者F:从当前显示中添加或者删除项目;
  o或者O:改变显示项目的顺序;
  l:切换显示平均负载和启动时间信息;
  m:切换显示内存信息;
  t:切换显示进程和CPU状态信息;
  c:切换显示命令名称和完整命令行;
  M:根据驻留内存大小进行排序;
  P:根据CPU使用百分比大小进行排序;
  T:根据时间/累计时间进行排序;
  w:将当前设置写入~/.toprc文件中。
  


		前五行是系统整体的统计信息。
		第一行: 任务队列信息,同 uptime 命令的执行结果。内容如下:
			01:06:48 当前时间
			up 1:22 系统运行时间,格式为时:分
			1 user 当前登录用户数
			load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。
			三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

		第二、三行:为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
			Tasks: 29 total 进程总数
			1 running 正在运行的进程数
			28 sleeping 睡眠的进程数
			0 stopped 停止的进程数
			0 zombie 僵尸进程数
			Cpu(s): 0.3% us 用户空间占用CPU百分比
			1.0% sy 内核空间占用CPU百分比
			0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比
			98.7% id 空闲CPU百分比
			0.0% wa 等待输入输出的CPU时间百分比
			0.0% hi
			0.0% si

		第四、五行:为内存信息。内容如下:
			Mem: 191272k total 物理内存总量
			173656k used 使用的物理内存总量
			17616k free 空闲内存总量
			22052k buffers 用作内核缓存的内存量
			Swap: 192772k total 交换区总量
			0k used 使用的交换区总量
			192772k free 空闲交换区总量
			123988k cached 缓冲的交换区总量。
			内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
			该数值即为这些内容已存在于内存中的交换区的大小。
			相应的内存再次被换出时可不必再对交换区写入。

		进程信息区,各列的含义如下:  # 显示各个进程的详细信息

		序号 列名    含义
		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
# Update every <interval> samples:
#更新每个<interval>样本:
top -i <interval>

# Set the delay between updates to <delay> seconds:
#将更新之间的延迟设置为<delay>秒:
top -s <delay>

# Set event counting to accumulative mode:
#将事件计数设置为累积模式:
top -a

# Set event counting to delta mode:
#将事件计数设置为增量模式:
top -d

# Set event counting to absolute mode:
#将事件计数设置为绝对模式:
top -e

# Do not calculate statistics on shared libraries, also known as frameworks:
#不要计算共享库的统计信息,也称为框架:
top -F

# Calculate statistics on shared libraries, also known as frameworks (default):
#计算共享库的统计信息,也称为框架(默认):
top -f

# Print command line usage information and exit:
#打印命令行使用信息并退出:
top -h

# Order the display by sorting on <key> in descending order
#通过按降序排序<key>来排序显示
top -o <key>

$ top
# top -xxx 当前时间  up xx 系统运行时间  x users当前登录用户数 
# load average 系统负载 即任务队列的平均长度 分别1分钟 5分钟 15分钟前到现在的平均值
top - 13:28:01 up 76 days, 16:09,  2 users,  load average: 0.00, 0.01, 0.05
# 第二、三行为进程和CPU的信息,当有多个CPU时,这些内容可能会超过俩行
# total 进程总数 running 正在运行的进程数 sleeping 睡眠的进程数 
# stoped 停止的进程数 zombie 僵尸进程数
Tasks:  85 total,   1 running,  84 sleeping,   0 stopped,   0 zombie
# CPU信息 多个CPU在数字键盘1 可以按照每个逻辑CPU的状况
# us 用户空间占用CPU百分比 sy内核空间占用CPU百分比 ni用户进场空间内改变优先级的进程占用CPU百分比
# id 空闲CPU百分比 wa 等待输入输出的CPU时间百分比 hi 硬件CPU中断再用百分比 si软中断占用百分比
# 虚拟机占用百分比
%Cpu(s):  0.2 us,  0.1 sy,  0.0 ni, 99.7 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
# 内存信息
# total 物理内存总量 free 空闲内存总量	used 使用的物理内存总量  buff/cache 内核缓存的内存量
KiB Mem :  3882032 total,   211112 free,   166384 used,  3504536 buff/cache
# swap 
# total 交换区总总量	free 空闲交换区总量 used 使用的交换区总量 avail mem有效内存
KiB Swap:        0 total,        0 free,        0 used.  3409756 avail Mem
# PID-进程ID  USER-进程搜有者 PR-进程优先级 NI-nice值负值表示高优先级 正直表示低优先级
# VIRT-进程使用的虚拟内存总量,单位为KB  RES-进程使用的,未被换出来的物理内存大小
# SHR-共享内存大小,单位KB S-进程状态 D=不可中断的睡眠状态 R=睡眠 T=跟踪/停止 Z=僵尸进程
# %CPU-上次更新到现在的CPU时间占用百分比 %MEM-进程使用的物理内存百分比 
# TIME+/进程使用CPU时间总计,单位1/100秒
# COMMAND-进程名称
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0  123036   3736   2428 S   0.0  0.1   4:57.39 systemd
    
$ top  -d 2 //每隔俩秒显示所有进程的资源占用情况
$ top -p 4360,4345 //监控制度的进场