概述
top
和 ps
是 Linux 系统中两个非常重要的用于管理和监控进程的命令工具。以下是它们的主要功能和区别:
top:
动态视图:top 提供了一个实时动态更新的视图,能够持续显示系统中当前正在运行的进程信息及其资源占用情况。
系统性能监控:除了显示进程信息外,top 还可以显示系统的整体性能指标,如平均负载(uptime,load average)、CPU使用率(%CPU)、内存使用量(%MEM)等。
更新频率:默认情况下,top命令会定期(通常是3秒钟)刷新输出,更新进程列表和系统状态。 top -d 2
ps:
静态视图:ps 命令在执行瞬间提供一个进程状态的快照,它不会像 top 那样持续刷新,一次性输出指定时刻的进程信息。
详细信息:ps 可以列出大量的进程详细信息,包括进程ID(PID)、父进程ID(PPID)、进程状态、CPU利用率、内存占用、启动时间和命令行等。
定制化输出:
ps
支持多种参数组合,可以灵活定制输出格式和选择要显示的进程,例如通过-ef
参数查看全部进程的详细信息,或者通过-aux
查看系统中所有用户的进程等。
1.top命令
top命令的输出如下
- 第一行:系统运行时间和平均负载
当前时间、系统已运行时间、当前登录用户的数量、最近5、10、15分钟内的平均负载
- 第二行:任务
任务的总数、运行中(running)的任务、休眠(sleeping)中的任务、停止(stopped)的任务、僵尸状态(zombie)的任务
- 第三行:cpu状态
字段 | 字段释义 |
us | user: 运行(未调整优先级的) 用户进程的CPU时间 |
sy | system: 运行内核进程的CPU时间 |
ni | niced:运行已调整优先级的用户进程的CPU时间 |
id | idle:空闲时间 |
wa | IO wait: 用于等待IO完成的CPU时间 |
hi | 处理硬件中断的CPU时间 |
si | 处理软件中断的CPU时间 |
st | 这个虚拟机被hypervisor偷去的CPU时间(译注:如果当前处于一个hypervisor下的vm,实际上hypervisor也是要消耗一部分CPU处理时间的) |
- 第四行:内存
全部可用内存、已使用内存、空闲内存、缓冲内存
- 第五行:swap
全部、已使用、空闲和缓冲交换空间
- 第七行至N行:各进程任务的的状态监控
字段 | 释义 |
PID | 进程ID,进程的唯一标识符 |
USER | 进程所有者的实际用户名 |
PR | 进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。 |
NI | 进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级 |
VIRT | virtual memory usage 虚拟内存,进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 |
RES | resident memory usage 常驻内存,驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA 1、进程当前使用的内存大小,但不包括swap out |
SHR | SHR:shared memory 共享内存 1、除了自身进程的共享内存,也包括其他进程的共享内存 |
S | 这个是进程的状态。它有以下不同的值:
|
%CPU | 自从上一次更新时到现在任务所使用的CPU时间百分比。%CPU显示的是进程占用一个核的百分比,而不是整个cpu(N核)的百分比,有时候可能大于100,那是因为该进程启用了多线程占用了多个核心,所以有时候我们看该值得时候会超过100%,但不会超过总核数*100 |
%MEM | 进程使用的可用物理内存百分比 |
TIME+ | 任务启动后到现在所使用的全部CPU时间,精确到百分之一秒 |
COMMAND | 运行进程所使用的命令。进程名称(命令名/命令行) |
2、交互命令
Z:改变颜色;B:加粗
t:显示和隐藏任务/cpu信息;m:内存信息
1:监控每个逻辑CPU的状况;
f:进入字段显示配置模式,可增加或者移除显示字段,按相应的字母新增或去除;o:进入字段顺序设置模式,可配置显示位置顺序,按相应的字母往下移动,按“shift+相应的字母”往上移动 ---------常用
F:进入字段排序配置模式,可设置排序的字段;
R:正常排序/反向排序;
s:设置刷新的时间--------常用
u:输入用户,显示用户的任务
i:忽略闲置和僵死进程。这是一个开关式命令。
r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
c:切换显示命令名称和完整命令行。
M:根据驻留内存大小进行排序。-------------常用
P:根据CPU使用百分比大小进行排序。-----------常用
H:显示线程
3、常用参数与命令
d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
p:通过指定监控进程ID来仅仅监控某个进程的状态。
top –p PID
-H: 设置线程模式
显示某个进程所有活跃的线程消耗情况
top -H -p pid
按f、再按j把P调出来,P代表”Last used CPU”
4.进程查看ps
- aux
a:显示一个终端所有的进程
u:显示进程的归属用户及内存使用情况
x:显示没有关联控制终端的进程- axjf
j:显示进程归属的进程组id、会话id、父进程id
f:以ascii的形式显示出进程的层次关系
举例aux
-
USER:进程是哪个用户产生的
-
PID:进程的身份证号码
-
%CPU:指进程对CPU的占用率
-
%MEM:进程占用内存的百分比
-
VSZ:进程使用虚拟内存的大小
-
RSS:进程使用物理内存的大小
-
TTY:进程关联的终端
-
STAT:进程当前状态
-
START:进程的启动时间
-
TIME:进程运行的时间
-
COMMAND:当前进程执行的是哪个程序
举例axjf
PPID:当前进程父进程的id
PID:当前进程的id
PGID:当前进程所在的进程组的ID
SID:进程所在的会话的ID
TTY:进程所关联的终端
TPGID:判断进程是否为守护进程(-1则为守护进程)
STAT:进程当前状态
UID:用户ID,记录进程是哪个用户启动的
TIME:进程运行的时间
COMMAND:记录进程之间的层次关系(和上边不同)
使用场景
- 关注进程本身,使用aux
- 关注进程之间的关系,用axjf