day14 day15 进程管理
查看系统使用情况
df #硬盘
free #内存
top、ps aux #CPU
ps -elf #找进程的父进程
进程状态
0号进程创建1号2号子进程
1号开头进程用户进程
2号开头进程系统进程
ps aux
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率,指的是实际内存RSS占用率
VSZ: 占用虚拟内存,单位:KB(killo Bytes)
VSZ是指已分配的线性空间大小,这个大小通常并不等于程序实际用到的内存大小,产生这个的可能性很多,比如内存映射,共享的动态库,或者向系统申请了更多的堆,都会扩展线性空间大小。
RSS: 占用实际内存,单位:KB(killo Bytes)
TTY: 进程运行的终端
进程状态 man ps (/STATE)
R 运行
S 可中断睡眠 Sleep,即在睡眠的过程中可以接收信号唤醒=》执行的IO操作可以得到硬件设备的响应
D 不可中断睡眠,即在睡眠的过程中不可以接收信号唤醒=》执行的IO操作得不到硬件设备的响应
T 停止的进程
Z 僵尸进程
X 死掉的进程(几乎看不见,因为死了就立即回收了)
< 标注了<小于号代表优先级较高的进程
N N代表优先级较低的进程
s 该进程包含子进程,该进程自己是整个会话的领导者
+ +表示是前台的进程组
l 小写字母l,代表以线程的方式运行,即多线程
| 管道符号代表多进程
START: 进程的启动时间
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名
带[]号的代表内核态进程
不带[]号的代表用户态进程
补充Centos9中还有一个大写字母I的进程状态
大写字母"I"代表的进程状态是"Idle kernel thread",这意味着该进程是一个空闲的内核线程,不是用户模式下的空闲进程。这个状态通常只应用于内核线程,用户进程通常不会有这个状态。
活着的状态
- 运行、就绪 #R
- 阻塞 #S或D
S:可中断的睡眠(可用Ctrl + c,kill -9 pid命令中止)
D:不可被中止(防止数据丢失的保护机制)
死了的状态
- 僵尸进程 #Z
每个进程死掉之前都会进入僵尸进程的状态
父进程创建子进程后,子进程先于父进程结束运行,且父进程没有及时调用wait或waitpid来收集子进程的退出状态 - 退出的进程 #X(几乎看不到)
暂停状态
kill -SIGSTOP pid号 #暂停进程(T)
kill -SIGCONT pid号 #恢复进程
恢复之后,S+的进程会变成S的进程(前台变后台)
top命令
按1展开CPU折叠
shift + v #查看子进程
按s设置刷新时间
top -d 1 #每秒刷新
top -u nginx #按名字查询
top -p uid #按uid刷新
top命令下的含义
load average 1分钟 5分钟 15分钟
-
VIRT(Virtual Memory Size)
含义:进程使用的虚拟内存总量,包括进程已经分配但尚未使用的内存空间,以及映射到进程地址空间的文件、共享库等。虚拟内存是操作系统为每个进程提供的一种抽象,它允许进程使用比物理内存更大的地址空间。
单位:通常以 KiB(千字节)为单位显示。 -
RES(Resident Memory Size)
含义:进程当前实际占用的物理内存大小,也就是进程在物理内存中实际存在的页面数量所对应的内存量。这部分内存是进程真正使用的、存储在物理 RAM 中的数据和代码。
单位:同样通常以 KiB 为单位显示。 -
SHR(Shared Memory)
含义:进程共享的内存大小,即进程与其他进程或系统共享的内存区域的大小。这些共享内存区域可以包括共享库、共享数据段等,多个进程可以同时访问这些共享内存,从而减少内存的重复使用,提高内存利用率。
单位:以 KiB 为单位。 -
us(User Time)
含义:用户态进程占用 CPU 的时间百分比。即 CPU 花费在执行用户空间代码(如普通的应用程序)上的时间占总 CPU 时间的比例。
示例:若 us 显示为 30%,表示在统计周期内,CPU 有 30% 的时间用于执行用户态进程的代码。 -
sy(System Time)
含义:内核态进程占用 CPU 的时间百分比。也就是 CPU 花费在执行内核空间代码(如系统调用、内核驱动等)上的时间占总 CPU 时间的比例。
示例:当 sy 为 15% 时,意味着在统计周期内,CPU 有 15% 的时间用于执行内核态的操作。 -
ni(Nice Time)
含义:被调整过优先级(通过 nice 值调整)的用户态进程占用 CPU 的时间百分比。这些进程的优先级被人为降低或提高后,其占用 CPU 的时间情况会在该指标中体现。
示例:若 ni 为 5%,表示在统计周期内,被调整过优先级的用户态进程占用了 CPU 5% 的时间。 -
id(Idle Time)
含义:CPU 处于空闲状态的时间百分比。即 CPU 没有执行任何用户态或内核态进程代码,处于闲置等待任务的时间占总 CPU 时间的比例。
示例:当 id 显示为 50% 时,说明在统计周期内,CPU 有一半的时间处于空闲状态。 -
wa(Wait Time)
含义:CPU 等待 I/O 操作完成所花费的时间百分比。当进程发起 I/O 请求(如读写磁盘、网络通信等)后,CPU 可能需要等待 I/O 操作完成才能继续执行后续任务,这段等待时间就会统计在 wa 中。
示例:若 wa 为 10%,表示在统计周期内,CPU 有 10% 的时间在等待 I/O 操作完成。 -
hi(Hardware IRQ Time)
含义:CPU 处理硬件中断请求所花费的时间百分比。硬件设备(如网卡、键盘、鼠标等)在需要 CPU 处理某些事件时,会向 CPU 发送中断请求,CPU 处理这些中断请求的时间会在该指标中体现。
示例:若 hi 为 2%,表示在统计周期内,CPU 有 2% 的时间用于处理硬件中断请求。 -
si(Software IRQ Time)
含义:CPU 处理软件中断请求所花费的时间百分比。软件中断通常是由操作系统内部机制触发的,用于处理一些异步事件,如定时器中断、信号处理等。
示例:当 si 为 1% 时,意味着在统计周期内,CPU 有 1% 的时间用于处理软件中断请求。 -
st(Steal Time)
含义:在虚拟机环境中,被 hypervisor(虚拟机管理程序)偷走的 CPU 时间百分比。当物理服务器上运行多个虚拟机时,hypervisor 可能会根据资源分配策略,优先将 CPU 资源分配给其他虚拟机,导致当前虚拟机的 CPU 时间被 “偷走”,这部分被偷走的时间就由 st 指标统计。
僵尸进程 孤儿进程
ps -elf | grep Z #查看僵尸进程的PPID
僵尸进程:父进程没有及时调用wait 或 waitpid 系统函数来获取子进程的退出状态信息,导致子进程虽然已经结束运行,但它在系统中的进程描述符等资源仍未被释放,从而成为僵尸进程。(没有及时回收)
孤儿进程:子进程失去父进程之后还在继续运行,就会变成孤儿进程,孤儿进程的父进程PID为1,孤儿进程无需进行处理(父进程异常退出)
管理命令
进程优先级
PR #内核态使用的值
NI #用户态使用的值,可修改
PR值=20+NICE值 #NICE值的范围为-20到19
PR值越小,优先级越高
NI命令
用 nice 执行命令:
nice -n -20 python test.py
用 nice 修改命令优先级
renice -n -20 进程UID
给进程发送信号
杀死进程
kill -9 PID #直接杀死
kill -15 PID #要求程序自己退出
暂停进程
kill -18 PID #恢复进程
kill -19 PID #直接暂停
kill -20 PID #要求程序自己暂停
pkill -9 PNAME #按进程名杀死进程
要求进程平滑重启(HUP)
kill -HUP PID
kill -1 PID
管理后台进程
jobs #查看所有正在运行后缀加 & 的进程
把后台进程放到前台
fg %1 #把第一个进程放到前台
把前台进程放到后台
ctrl + z #先暂停
bg %1 #把第一个进程放到后台

浙公网安备 33010602011771号