程序被触发后,运行者的权限与属性、程序的代码与所需数据等都会被加载内存中,操作系统并给予这个内存内的单元一个识别码(PID),可以说,进程就是一个正在运行中的程序。
ps命令
ps命令可以查看进程信息,它可以确定有哪些进程正在运行以及进程运行的状态、进程是否结束,进程有没有僵死,哪些进程占用了过多的资源。
命令语法:ps [选项]
命令中[选项]的含义:
-a:显示所有用户进程
-e:显示进程环境变量
-l:给出详细信息的列表
-r:只显示正在运行的进程
-S:增加CPU时间和页面出错的信息
-w:按宽格式显示输出
-u:打印用户格式,显示用户名和进程的起始时间
-x:显示不带控制终端的进程
查看指定程序是否运行(如less程序):ps -aux | grep less
ps命令输出字段的含义
USER:该进程属于哪个用户账号
PID :进程号,可以唯一标识该进程
%CPU:该进程使用掉的 CPU 资源百分比;
%MEM:该进程所占用的物理内存百分比;
VSZ :该进程使用的虚拟内存大小,以KB为单位
RSS :该进程占用的物理内存的总数量,以KB为单位
TTY :该进程是在那个终端机上面运行,若与终端机无关则显示 ?,另外, tty1-tty6 是本机上面的登陆者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态
R (Running):该程序正在运行中;
S (Sleep):该程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
D :不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况
T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外。
START:该进程开始运行的时间
TIME :该进程实际使用的总CPU时间。
COMMAND:被执行的命令行
top命令
top命令可以显示当前正在运行的进程以及关于它们的重要信息,是持续监测进程运行状态。而ps命令是选取一个时间点的进程状态。
命令语法:top [-d 数字] [-bnp]
命令中部分[选项]的含义:
-d:后面可以接秒数,就是整个进程界面更新的秒数。默认是5秒。
-b:以批次的方式运行 top ,还有更多的参数可以使用
通常会搭配输出重定向来将批处理的结果输出成为文件。
-n:与 -b 搭配,意义是,需要进行几次 top 的输出结果。
-p:指定某些个 PID 来进行观察监测而已。
在 top 运行过程当中可以使用的按键命令:
?:显示在 top 当中可以输入的按键命令
P:以 CPU 的使用资源排序显示
M:以内存的使用资源排序显示
N:以 PID 来排序
T:由该进程使用的 CPU 时间累积 (TIME+) 排序
k:给予某个 PID 一个信号 (signal)
r:给予某个 PID 重新制定一个 nice 值
q:离开 top 软件的按键
top命令输出结果解析
第一部分是前6行,是系统整体的统计信息;
第二部分是进程信息
第一行:
- top:当前时间
- up:机器运行了多长时间
- users:当前登录用户数
- load average:系统负载,在一段时间内,CPU正在处理以及等待CPU处理的进程数之和,三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二行
- Tasks:当前有多少进程
- running:正在运行的进程数
- sleeping:正在休眠的进程数
- stopped:停止的进程数
- zombie:僵尸进程数
running进程越大,系统负载越多
zombie僵尸进程尽量不要有
第三行
us:用户空间占CPU的百分比(像shell程序、各种语言的编译器、各种应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态)
sy: 内核空间占CPU的百分比(所有进程要使用的系统资源都是由Linux内核处理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它)
ni:用户进程空间改变过优先级(ni是nice的缩写,可以通过nice值调整进程用户态的优先级,这里显示的ni表示调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)
id: 空闲CPU占用率
wa: 等待输入输出的CPU时间百分比(和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如,CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的)
hi: 硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)。)
si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)
https://blog.csdn.net/langzi6/article/details/124805024
第四行与第五行:
表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况。要注意的是 swap 的使用量要尽量的少!如果 swap 被大量使用,表示系统的物理内存实在不足!
第六行:
当在 top 程序当中输入命令时,显示状态的地方。(一般看不到)
进程信息
PID 进程id
USER 进程所有者的用户名
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR 共享内存大小,单位kb
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行