一 ps命令
1 描述
该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等等。ps命令最常用的还是用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。
ps是显示瞬间进程的状态,并不动态连续;如果想对进程进行实时监控应该用top命令。
2 主要参数
常见参数:
参数 | 作业 |
---|---|
a | 列出终端相关的,如果想列出所有进程需要配合x |
u | 显示面向用户的格式 |
x | 列出终端先关的,如果列出所有进程需要配合a |
f | 显示进程树,这个显示效果跟pstree的效果差远啦 |
k | 根据指定指标去排序 |
–sort | 根据指定指标去排序,%cpu以cpu占用排序,-%cpu反序排 |
o | 设置显示的列 |
L | 显示支持的属性列表 |
-C | 指定命令,多个命令用,分割 |
-L | 显示线程 |
-u | 指定有效用户ID或名称 |
-U | 指定真正的用户ID或名称 |
-p | 显示指定pid进程 |
–pid | 显示属于pid的子进程 |
–forest | 树型显示 |
最常用的有ps -ef
和ps aux
。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux
最初用到Unix Style中,而ps -ef
被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。这个命令比较特殊,支持了三种风格:
- Unix选项:使用1个-
- BSD选项:选项不使用-
- GNU长选项:选项使用2个-
3 ps -ef
ps -ef
是用标准的格式显示进程的、其格式如下:
名称 | 内容 |
---|---|
UID | 用户ID、但输出的是用户名 |
PID | 进程的ID |
PPID | 父进程ID |
C | 进程占用CPU的百分比 |
STIME | 进程启动到现在的时间 |
TTY | 该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 |
CMD | 命令的名称和参数 |
4 ps aux
ps aux
用BSD的格式来显示、其格式如下:
名称 | 内容 |
---|---|
USER | 用户名 |
PID | 进程的ID |
%CPU | 进程占用的CPU百分比 |
%MEM | 占用内存的百分比 |
VSZ | 该进程使用的虚拟內存量(KB) |
RSS | 该进程占用的固定內存量(KB)(驻留中页的数量) |
STAT | 进程的状态 |
START | 该进程被触发启动时间 |
TIME | 该进程实际使用CPU运行的时间 |
其中STAT状态位常见的状态字符有:
名称 | 内容 |
---|---|
D | 无法中断的休眠状态(通常 IO 的进程); |
R | 正在运行可中在队列中可过行的; |
S | 处于休眠状态; |
T | 停止或被追踪; |
W | 进入内存交换 (从内核2.6开始无效); |
X | 死掉的进程 (基本很少见); |
Z | 僵尸进程; |
< | 优先级高的进程 |
N | 优先级较低的进程 |
L | 有些页被锁进内存; |
s | 进程的领导者(在它之下有子进程); |
l | 多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); |
+ | 位于后台的进程组 |
5 用例
- 查看所有进程的命令,进程id,cpu占用,内存占用信息 ,并按照cpu占用排序:
ps axo cmd,pid,%cpu,%mem k %cpu
- 查看指定终端的进程:
ps -t pts/3
- 查看指定终端的进程:
ps -t pts/3
二 top命令
1 概述
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
2 功能说明
第一行,任务队列信息,同 uptime 命令的执行结果。
系统时间:19:27:01
运行时间:up 54 min
当前登录用户:1 user
负载均衡(uptime) load average: 0.02, 0.03, 0.00,average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行,Tasks — 任务(进程)
总进程:159 total, 运行:1 running, 休眠:157 sleeping, 停止: 1 stopped, 僵尸进程: 0 zombie
第三行,cpu状态信息
0.0%us【user space】— 用户空间占用CPU的百分比。
0.1%sy【sysctl】— 内核空间占用CPU的百分比。
0.0%ni【】— 改变过优先级的进程占用CPU的百分比。
99.9%id【idolt】— 空闲CPU百分比。
0.0%wa【wait】— IO等待占用CPU的百分比。
0.0%hi【Hardware IRQ】— 硬中断占用CPU的百分比。
0.0%si【Software Interrupts】— 软中断占用CPU的百分比。
第四行,内存状态。
1012288k total, 234464k used, 777824k free, 24084k buffers【缓存的内存量】
第五行,swap交换分区信息。
614396k total, 0k used, 614396k free, 72356k cached【缓冲的交换区总量】
备注:可用内存=free + buffer + cached,对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,第四行中空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
第六行,空行。
第七行以下:各进程(任务)的状态监控。
名称 | 含义 |
---|---|
PID | 进程id |
USER | 进程所有者 |
PR | 进程优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
VIRT | virtual memory usage 虚拟内存,单位kb。VIRT=SWAP+RES 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 |
RES | resident memory usage 常驻内存,单位kb。RES=CODE+DATA 1、进程当前使用的内存大小,但不包括swap out 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小 |
SHR | shared memory 共享内存,单位kb 1、除了自身进程的共享内存,也包括其他进程的共享内存 2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小 3、计算某个进程所占的物理内存大小公式:RES – SHR 4、swap out后,它将会降下来 |
S | 进程状态。D:不可中断的睡眠状态,R:运行,S:睡眠,T:跟踪/停止,Z:僵尸进程 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 进程名称(命令名/命令行) |
3 其他使用技巧
- 多U多核CPU监控:在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况。
- 高亮显示当前运行进程:敲击键盘“b”(打开/关闭加亮效果),“top”进程被加亮了,可以通过敲击“y”键关闭或打开运行态进程的加亮效果。
- 进程字段排序:默认进入top时,各进程是按照CPU的占用量来排序的,敲击键盘“x”(打开/关闭排序列的加亮效果)。
- 通过”shift + >”或”shift + <”可以向右或左改变排序列:按一次”shift + >”的效果图,视图现在已经按照%MEM来排序,再按一次按时间排。
- top交互命令。
命令 | 作用 |
---|---|
h | 显示帮助画面,给出一些简短的命令总结说明 |
k | 终止一个进程。 |
i | 忽略闲置和僵死进程。这是一个开关式命令。 |
q | 退出程序 |
r | 重新安排一个进程的优先级别 |
S | 切换到累计模式 |
s | 改变两次刷新之间的延迟时间(单位为s) |
f或者F | 从当前显示中添加或者删除项目 |
o或者O | 改变显示项目的顺序 |
l | 关闭或开启第一部分第一行 top 信息的表示 |
m | 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示 |
t | 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示 |
c | 切换显示命令名称和完整命令行 |
M | 根据驻留内存大小进行排序 |
N | 以 PID 的大小的顺序排列表示进程列表 |
P | 根据CPU使用百分比大小进行排序 |
T | 根据时间/累计时间进行排序 |
W | 将当前设置写入~/.toprc文件中 |
4 常用显示命令
显示完整命令:top -c
设置信息更新次数:top -n 2
【表示更新两次后终止更新显示】
设置信息更新时间:top -d 3
【表示更新周期为3秒】
1、实时性:ps命令是系统在过去执行的进程的静态快照;top命令反应的是系统进程动态信息,默认3s更新一次,可以用ps -d指定屏幕刷新的延迟时间。2、交互性:允许用户输入控制命令,比如在top命令的模式下输入n5,就显示如图的此时的5个最活跃的进程,top会持续运行直到用户按下"q",退出top