Linux 进程管理
进程介绍
补充:
- 程序:没有运行的可执行文件。
- 软件:包含程序、手册、配置文件等全套的东西。软件工程。
- 进程:程序运行后,会使用cpu、内存、磁盘、网络等资源。
- 线程:将程序划分成更小的执行单元。
进程是什么
进程是已启动的可执行程序的运行中实例。
进程由以下组成部分:
- 已分配内存的地址空间
- 安全属性,包括所有权凭据和特权
- 程序代码的一个或多个执行线程
- 进程状态
进程的环境包括:
- 本地和全局变量
- 当前调度上下文
- 分配的系统资源,如文件描述符和网络端口
进程产生-fork
一、系统调用流程图解读(fork /exec/exit /wait)
fork()
父进程调用 fork(),复制自身,一个调用,两份进程:父进程、子进程
- 父进程:fork 返回子进程 PID
- 子进程:fork 返回 0
exec ()(子进程常用)
子进程调用 exec(),加载全新程序,覆盖子进程原有代码。
Shell 执行外部命令标准流程:bash → fork → 子进程exec运行sleep/md5sum
exit()
子进程运行结束,主动退出,进入
Z(僵尸进程)
wait ()(父进程调用)
父进程执行wait(),回收僵尸子进程,彻底释放 PCB,进程变为 X 消亡态。
核心结论:父进程不执行 wait,子进程会永久处于僵尸 Z 状态
二、进程完整状态流转图
流转主线
new新建进程 → R就绪(Runnable) → R运行(Running)
- sleep/ 等待网络 → S 可中断睡眠(信号可唤醒)
- 等待磁盘 IO → D 不可中断睡眠(信号无法唤醒)
| R | TASK_RUNNING | 运行 / 就绪 | 正在 CPU 执行,或排队等待调度;md5sum /dev/zero CPU 满载进程 |
| S | TASK_INTERRUPTIBLE | 可中断睡眠 | 等待事件,能够被信号唤醒;sleep 10、等待网络连接 |
| D | TASK_UNINTERRUPTIBLE | 不可中断睡眠 | 等待硬件 IO;任何信号(kill -9)都无法杀死 |
| T | TASK_STOPPED | 暂停态 | 进程被冻结;Ctrl+z、kill -19 PID |
| t | TASK_TRACED | 调试暂停 | gdb/strace 调试程序时出现 |
| Z | EXIT_ZOMBIE | 僵尸进程 | 子进程已 exit,资源释放,仅保留 PID,等待父进程 wait 回收 |
| X | EXIT_DEAD | 消亡态 | 父进程回收完成,进程彻底消失;ps 永远看不到 |
[meng@centos7 ~ 19:38:17]$ ps -e
# -e 显示系统全部进程,简易输出格式
[meng@centos7 ~ 19:38:31]$ ps -e |head -n 5
# head -n 5,只展示输出前5行
[meng@centos7 ~ 19:38:51]$ ps -ef |head -n 5
# -ef:全部进程 + 完整格式,自带UID、PPID父进程ID
[meng@centos7 ~ 19:38:58]$ ps -u meng u
# -u meng 筛选meng用户所有进程,u启用详细展示格式
[meng@centos7 ~ 19:39:15]$ ps -t pts/1 u
# -t 指定终端,只查看pts/1内运行的进程
[meng@centos7 ~ 19:39:34]$ tty
# 查看当前登录终端设备名称
[meng@centos7 ~ 19:39:47]$ ps -t pts/2 u
# 查看当前终端pts/2下所有进程
[meng@centos7 ~ 19:39:50]$ ps axu|head -n 5
# axu:日常最常用,查看全部进程、包含后台无终端进程,展示CPU/内存/状态
[meng@centos7 ~ 19:40:13]$ ps axf |head
# axf:树形展示进程,直观查看父子进程关系
[meng@centos7 ~ 19:43:25]$ ps -o pid,%cpu,%mem,command 1760
# -o 自定义输出字段;查询指定PID进程信息
[meng@centos7 ~ 19:43:25]$ ps axu –sort -%cpu
# –sort -%cpu,按照CPU使用率降序排序(-代表降序)
[meng@centos7 ~ 19:44:19]$ ps axu –sort -%cpu|tail -n 5
# tail -n 5,截取输出最后5行
[meng@centos7 ~ 19:44:56]$ ps axu –sort %cpu|head -n 5
# –sort %cpu 不带负号,CPU使用率升序排列
# 使用Here文档创建脚本 /usr/local/bin/study
# 'EOF'带引号:内部变量不解析,原样写入文件
[root@centos7 ~]# cat << 'EOF' > /usr/local/bin/study
#!/bin/bash
while true
do
# $@ 接收脚本所有传入参数;>> 追加写入study.log
echo "$(date): I'm studying [ $@ ]" >> study.log
sleep 1
done
EOF
# 添加执行权限,全局命令(路径/usr/local/bin在PATH内,任意目录直接运行study)
[root@centos7 ~]# chmod +x /usr/local/bin/study
# -f 实时跟踪日志末尾输出
[meng@centos7 ~ 19:46:23]$ tail -f study.log
# & 后台运行;study 后面【放牛】作为参数,脚本内$@接收
[meng@centos7 ~ 19:50:06]$ study 放牛 &
[1] 14986
# 同时启动两个后台任务
[meng@centos7 ~ 19:50:07]$ study 放猪 & study 放羊 &
[2] 15100
[3] 15101
# jobs 查看当前shell所有后台任务列表
[meng@centos7 ~ 19:50:58]$ jobs
# 新增后台任务
[meng@centos7 ~ 19:51:07]$ study 放猴 &
[4] 15923
# 前台执行,按下 Ctrl+z 发送SIGTSTP(20号信号),进程暂停(T状态)
[meng@centos7 ~ 19:53:13]$ study 放鸡
^Z
[5]+ 已停止 study 放鸡
# bg %5 :把编号5的暂停任务放到后台继续运行
[meng@centos7 ~ 19:53:39]$ bg %5
[5]+ study 放鸡 &
[meng@centos7 ~ 19:53:58]$ jobs
# 前台执行,Ctrl+C发送SIGINT,直接终止当前前台进程
[meng@centos7 ~ 19:54:03]$ study 放鸡
^C
# fg %1:将任务编号1的后台进程切换到前台运行
[meng@centos7 ~ 19:54:19]$ fg %1
study 放牛
^C # 前台按下Ctrl+C,任务1被杀死
[meng@centos7 ~ 19:54:32]$ jobs
# ❌pkill 放 失效!进程命令名称是study,不是“放猪/放牛”,无法匹配
[meng@centos7 ~ 19:55:01]$ pkill 放
# kill 1 错误:1是systemd进程PID,普通用户无权限
[meng@centos7 ~ 19:55:03]$ kill 1
-bash: kill: (1) – 不允许的操作
# %1任务已经被ctrl+c销毁,任务不存在
[meng@centos7 ~ 19:55:18]$ kill %1
-bash: kill: %1: 无此任务
# kill %任务编号:向后台任务发送默认15号SIGTERM信号终止进程
[meng@centos7 ~ 19:55:39]$ kill %2
[meng@centos7 ~ 19:55:42]$ kill %3
[2] 已终止 study 放猪
[meng@centos7 ~ 19:55:48]$ kill %4
[3] 已终止 study 放羊
[meng@centos7 ~ 19:55:51]$ kill %5
[4]– 已终止 study 放猴
给进程发信号
信号介绍
signal 是传递给进程的软中断。
生成信号的事件可以是错误,外部事件或者使用信号发送命令或键盘序列。
| 1 | HUP | 挂起 | 1. 终端断开时发给终端下所有进程;2. 常用重载配置(kill -1 进程号,进程不退出,重新读取配置文件) |
| 2 | INT | 键盘中断 | Ctrl+c 触发;可被程序捕获、处理,请求程序正常终止 |
| 3 | QUIT | 键盘退出 | Ctrl+\\ 触发;类似 INT,终止同时生成core 核心转储文件,用于调试 |
| 9 | KILL | 强制中断(不可拦截) | 终极杀进程指令;进程无法捕获、忽略、阻塞,立刻强制结束;⚠️容易丢失数据 |
| 15 | TERM | 终止(默认信号) | kill PID 默认发送 15 号;友好关闭信号,程序可捕获,执行清理、保存资源后退出 |
| 18 | CONT | 继续 | 唤醒被暂停的进程;搭配 STOP/TSTP 使用,无法被拦截;bg命令底层发送 CONT |
| 19 | STOP | 暂停(不可拦截) | 强制冻结进程,进程无法抵抗;进程暂停后不再占用 CPU |
| 20 | TSTP | 键盘停止 | Ctrl+z 触发;把前台进程放到后台暂停;可被程序捕获、忽略 |
# 查看当前终端后台任务列表,此时没有后台进程
[meng@centos7 ~ 18:44:24]$ jobs
# & 放到后台运行,任务编号[1],进程PID=13260
[meng@centos7 ~ 18:44:32]$ study hello world &
[1] 13260
# 第二个后台任务,任务编号[2],PID=13295
[meng@centos7 ~ 18:44:54]$ study 放牛 &
[2] 13295
# 列出所有信号对照表,和你之前表格一一对应
[meng@centos7 ~ 18:45:22]$ kill -l
# %1 代表【后台任务编号1】,发送 19 SIGSTOP 信号 → 暂停进程
[meng@centos7 ~ 18:46:14]$ kill -19 %1
[1]+ 已停止 study hello world
# 发送18 SIGCONT 信号,恢复被暂停的任务1
[meng@centos7 ~ 18:46:25]$ kill -18 %1
# 查看后台任务状态
[meng@centos7 ~ 18:46:30]$ jobs
[1]+ 运行中 study hello world &
[2]– 运行中 study 放牛 &
# kill 不加数字,默认发送15 SIGTERM 友好终止信号,作用后台任务%1
[meng@centos7 ~ 18:46:45]$ kill %1
[1]+ 已终止 study hello world
# 任务1消失,仅剩任务2
[meng@centos7 ~ 18:46:46]$ jobs
[2]+ 运行中 study 放牛 &
# 通过PID查找study相关进程
[meng@centos7 ~ 18:47:58]$ ps axu |grep study
meng 13295 0.0 0.0 113284 1452 pts/2 S 18:44 0:00 /bin/bash /usr/local/bin/study 放牛
# 直接使用进程PID发送默认15号信号,终止进程
[meng@centos7 ~ 18:48:41]$ kill 13295
[2]+ 已终止 study 放牛
# 所有后台进程全部结束,jobs输出为空
[meng@centos7 ~ 18:48:51]$ jobs
pkill 和 pgrep 命令
作用:给多个进程发信号。
# 一次性后台启动3个sleep进程
[meng@centos7 ~ 18:49:20]$ sleep 1231 & sleep 1232 & sleep 1233 &
[1] 14016
[2] 14017
[3] 14018
# pgrep 程序名:只输出匹配进程PID
[meng@centos7 ~ 18:51:17]$ pgrep sleep
14015
14016
14017
14018
# -l :同时输出【PID + 进程名称】
[meng@centos7 ~ 18:51:33]$ pgrep -l sleep
14015 sleep
14016 sleep
14017 sleep
14018 sleep
# ps 传统方式查看进程详情,能看到用户、终端、完整命令
[meng@centos7 ~ 18:51:39]$ ps axu |grep sleep
root 14015 0.0 0.0 108052 360 ? S 18:51 0:00 sleep 60
meng 14016 0.0 0.0 108052 356 pts/2 S 18:51 0:00 sleep 1231
meng 14017 0.0 0.0 108052 356 pts/2 S 18:51 0:00 sleep 1232
meng 14018 0.0 0.0 108052 356 pts/2 S 18:51 0:00 sleep 1233
# pkill sleep:匹配所有sleep进程,发送默认15号信号终止
# 报错:14015是root进程,meng普通用户没有权限杀死
[meng@centos7 ~ 18:52:02]$ pkill sleep
pkill: killing pid 14015 failed: 不允许的操作
[1] 已终止 sleep 1231
[2]– 已终止 sleep 1232
[3]+ 已终止 sleep 1233
# -u username 【重点参数】
# -u :匹配**指定有效用户**启动的所有进程
# ⚠️危险操作:pkill -u meng → 杀死meng用户全部进程,包含当前登录bash
# bash进程被杀死 → SSH会话直接断开,这就是你Xshell直接掉线的原因!
[meng@centos7 ~ 18:52:46]$ pkill -u meng
Connection closing...Socket close.
Connection closed by foreign host.
# 重新创建后台sleep进程
[meng@centos7 ~ 18:53:55]$ sleep 1231 & sleep 1232 & sleep 1232 &
[1] 14173
[2] 14174
[3] 14175
# tty 查看当前终端设备文件名
[meng@centos7 ~ 18:54:33]$ tty
/dev/pts/1
# -t 【参数】:匹配**指定终端**上运行的进程
# pgrep -t pts/1 -l 查找pts/1终端下所有进程
[meng@centos7 ~ 18:54:36]$ pgrep -t pts/1 -l
14073 bash
14173 sleep
14174 sleep
14175 sleep
# pkill -t pts/1:杀死该终端下所有匹配进程
# 只会杀掉sleep,不会杀掉bash会话(bash是会话首进程,一般不会被轻易回收)
[meng@centos7 ~ 18:55:10]$ pkill -t pts/1
[1] 已终止 sleep 1231
[3]+ 已终止 sleep 1233
[2]+ 已终止 sleep 1232
# ps jf 查看进程树:PPID(父PID) PID PGID(进程组) SID(会话ID)
[meng@centos7 ~ 18:56:31]$ ps jf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
14069 14073 14073 14073 pts/1 14207 Ss 1000 0:00 -bash
14073 14204 14204 14073 pts/1 14207 S 1000 0:00 \\_ sleep 1231
14073 14205 14205 14073 pts/1 14207 S 1000 0:00 \\_ sleep 1232
14073 14206 14206 14073 pts/1 14207 S 1000 0:00 \\_ sleep 1233
# -P 【重点参数 Parent】
# -P PID :匹配**指定PID的所有子进程**(直接子代)
# 14073 是bash,sleep全部是它的子进程;只杀死子sleep,bash本身不受影响
[meng@centos7 ~ 18:56:50]$ pkill -P 14073
[1] 已终止 sleep 1231
[2]– 已终止 sleep 1232
[3]+ 已终止 sleep 1233
pgrep /pkill 共用参数
| -l | list | 输出 PID + 进程名称 |
| -u | user | 匹配指定用户启动的进程 |
| -t | terminal | 匹配指定终端的进程 |
| -P | parent | 匹配指定父进程的直接子进程 |
无法用pgrep/pkill
# 命令整体:提取所有yum进程PID,发送9号SIGKILL强制杀死
[root@centos7 ~ 19:13:40]# kill -9 $(ps axu |grep yum|grep -v grep |awk '{print $2}')
# $( ) 命令替换:先执行管道命令筛选出yum进程PID,把PID列表传给kill -9
# 再次查询yum进程PID,确认进程已经消失
[root@centos7 ~ 19:14:13]# ps axu |grep yum|grep -v grep|awk '{print $2}'
# shell输出提示:后台任务[1]被SIGKILL杀死
[1]- 已杀死 yum install httpd
last
[meng@centos7 ~ 19:18:21]$ last
# last 命令:读取 /var/log/wtmp 日志,查看系统历史登录记录,新记录显示在最顶部
# 用户meng,伪终端pts/2,远程IP10.1.8.1,7月21日18:53登录,【当前仍在线】
meng pts/2 10.1.8.1 Tue Jul 21 18:53 still logged in
# 用户meng,伪终端pts/1,远程IP10.1.8.1,7月21日18:53登录,【当前仍在线】
meng pts/1 10.1.8.1 Tue Jul 21 18:53 still logged in
# 用户meng,pts/2,18:23登录,18:53退出,本次在线时长29分钟
meng pts/2 10.1.8.1 Tue Jul 21 18:23 – 18:53 (00:29)
# 用户meng,pts/1,18:23登录,18:53退出,本次在线时长30分钟
meng pts/1 10.1.8.1 Tue Jul 21 18:23 – 18:53 (00:30)
# root用户,pts/0,18:23登录,【当前仍在线】
root pts/0 10.1.8.1 Tue Jul 21 18:23 still logged in
# root,pts/2,15:13登录,18:19退出,在线3小时06分
root pts/2 10.1.8.1 Tue Jul 21 15:13 – 18:19 (03:06)
# meng,pts/1,15:13登录,18:19退出,在线3小时06分
meng pts/1 10.1.8.1 Tue Jul 21 15:13 – 18:19 (03:06)
无法直接杀死,
# 使用重定向创建脚本 bin/mm
[meng@centos7 ~ 19:20:23]$ cat > bin/mm <<EOF
> #!/bin/bash
> while true # 无限死循环
> do
> md5sum /dev/zero # CPU密集运算,持续消耗CPU
> sleep 1 # 休眠1秒
> done
> EOF
# chmod +x 【重点】 +x 添加【执行权限】,文件变成可执行程序
[meng@centos7 ~ 19:20:45]$ chmod +x bin/mm
# nohup 【重点】:脱离终端会话,关闭SSH窗口进程依然继续运行;&放到后台执行
[meng@centos7 ~ 19:21:09]$ nohup mm &
[1] 14660
nohup: 忽略输入并把输出追加到"nohup.out"
# ps axo 【重点拆解】
# a:所有用户进程
# x:无控制终端的进程也显示(nohup后台进程属于无终端进程,不加x会看不到!)
# o:自定义输出列,这里指定输出 pid,%cpu,command
# –sort -%cpu 按CPU使用率降序排列(负号代表降序)
# head -n 5 只显示前5行
[meng@centos7 ~ 19:21:21]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
PID %CPU COMMAND
14661 99.7 md5sum /dev/zero
735 0.1 /usr/bin/vmtoolsd
1 0.0 /usr/lib/systemd/systemd –switched-root –system –deserialize 22
2 0.0 [kthreadd]
# 尝试直接杀死子进程md5sum(PID=14661)
[meng@centos7 ~ 19:23:22]$ pkill -9 14661
# ⚠️现象:md5sum被杀,但是父脚本while循环会立刻再次启动新md5sum!
[meng@centos7 ~ 19:23:36]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
PID %CPU COMMAND
14661 100 md5sum /dev/zero
# pkill -9 md5sum:按名称杀md5sum,循环依旧会新建进程
[meng@centos7 ~ 19:23:39]$ pkill -9 md5sum
[meng@centos7 ~ 19:23:57]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
PID %CPU COMMAND
14689 107 md5sum /dev/zero
# 再次杀死新生成的md5sum子进程,循环继续拉起新进程
[meng@centos7 ~ 19:23:59]$ kill -9 14689
[meng@centos7 ~ 19:24:25]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
PID %CPU COMMAND
14701 81.6 md5sum /dev/zero
# ps ax -f
# a:全部用户进程
# x:包含无终端进程
# -f:完整格式化输出,显示PPID(父进程ID),打印进程树关系
# grep -e 多条件匹配,同时匹配md5sum、PPID
[meng@centos7 ~ 19:24:29]$ ps ax -f |grep -e md5sum -e PPID
UID PID PPID C STIME TTY STAT TIME CMD
meng 14701 14660 99 19:24 pts/2 R 0:43 md5sum /dev/zero
# 关键:14701(子md5sum) 的父进程PPID = 14660(nohup启动的bash脚本mm)
# 【正确做法】杀死父进程 14660!父shell消亡,循环终止,不会再生子进程
[meng@centos7 ~ 19:25:09]$ kill -9 14660
# 顺带清理残留子进程md5sum
[meng@centos7 ~ 19:25:26]$ kill -9 14701
[1]+ 已杀死 nohup mm
# 验证:md5sum进程彻底消失
[meng@centos7 ~ 19:25:37]$ ps ax -f |grep -e md5sum -e PPID
UID PID PPID C STIME TTY STAT TIME CMD
meng 14723 14592 0 19:25 pts/2 R+ 0:00 grep –color=auto -e md5su -e PPID
[meng@centos7 ~ 19:25:41]$ ps axo pid,%cpu,command –sort -%cpu |head -n 5
PID %CPU COMMAND
735 0.1 /usr/bin/vmtoolsd
1 0.0 /usr/lib/systemd/systemd –switched-root –system –deserialize 22
2 0.0 [kthreadd]
4 0.0 [kworker/0:0H]
监控系统负载
系统负载介绍
系统负载平均值:Linux内核以活动请求数的指数移动平均值来表示。
- 活动请求数不仅包含运行中进程,还包含等待IO的进程,对应于R和D。等待IO包括处于睡眠等待预期磁盘和网络响应的任务。
- 指数移动平均值是一个数学公式,可以平滑趋势数据的高值和低值,更加准确地表示一段时间内系统负载,并确定系统负载是随着时间增加还是减少。
- 根据所有CPU活动请求数,每5秒计算一次Load Average。通过汇总这些值,可以得到最近1分钟,5分钟和15分钟内的指数移动平均值。
- 一些UNIX系统仅考虑CPU使用率或运行队列长度。Linux中负载平均值中还包含了对IO的考量,遇到负载平均值很高但CPU活动很低时,检查磁盘和网络活动。
- Linux将各个物理CPU核心和微处理器超线程计为独立执行单元。每个独立的执行单元拥有独立的请求队列。
# 当前登录用户meng,主机centos7,命令行时间 18:23:10
[meng@centos7 ~ 18:23:10]$ lscpu
# 查看CPU硬件信息
Architecture: x86_64 # 系统架构 64位
CPU op-mode(s): 32-bit, 64-bit # 同时支持32/64位程序
Byte Order: Little Endian # 小端字节序
CPU(s): 2 # 虚拟机分配总逻辑CPU核心数:2核
On-line CPU(s) list: 0,1 # 在线CPU编号0、1
Thread(s) per core: 1 # 每个核心无超线程
Core(s) per socket: 1 # 每个物理插槽1核心
座: 2 # 虚拟机模拟2个CPU插槽
NUMA 节点: 1 # 只有1个NUMA节点
厂商 ID: GenuineIntel # Intel CPU
CPU 系列: 6
型号: 186
型号名称: 13th Gen Intel(R) Core(TM) i5-13500H # 宿主机物理CPU型号
步进: 2
CPU MHz: 3187.202 # 当前运行主频
BogoMIPS: 6374.40
超管理器厂商: VMware # 运行在VMware虚拟机内
虚拟化类型: 完全 # 完整硬件虚拟化
L1d 缓存: 48K # 一级数据缓存
L1i 缓存: 32K # 一级指令缓存
L2 缓存: 1280K
L3 缓存: 18432K
NUMA 节点0 CPU: 0,1
# Flags:CPU支持的指令集(avx2、aes、sha_ni等,虚拟化相关hypervisor标记)
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt clwb sha_ni xsaveopt xsavec xgetbv1 arat umip pku ospke gfni vaes vpclmulqdq movdiri movdir64b md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
[meng@centos7 ~ 18:24:10]$ uptime
# 查看系统运行时长、登录用户、CPU负载
18:24:31 up 7:54, 3 users, load average: 0.01, 0.38, 0.72
# 当前时间18:24:31;开机7小时54分;3个终端登录
# 1分钟/5分钟/15分钟平均负载:0.01、0.38、0.72,此时CPU空闲
[meng@centos7 ~ 18:24:58]$ md5sum /dev/zero &
# 后台启动进程:持续读取/dev/zero做md5哈希运算,纯CPU密集型压测
[1] 12983 # 第1个后台任务,PID=12983
[meng@centos7 ~ 18:25:17]$ md5sum /dev/zero &
# 再开一条CPU压测进程
[2] 12993 # 第2个后台任务,PID=12993
[meng@centos7 ~ 18:25:23]$ uptime
18:25:23 up 7:55, 3 users, load average: 0.50, 0.44, 0.72
# 负载开始上升,1分钟负载涨到0.50
[meng@centos7 ~ 18:26:01]$ uptime
18:26:10 up 7:56, 3 users, load average: 1.64, 0.74, 0.81
# 两条CPU打满,1分钟负载持续走高
# 连续敲 up,shell自动命令补全提示,没有up命令,提示匹配以up开头的程序
[meng@centos7 ~ 18:26:01]$ up
update-alternatives update-gtk-immodules upower
update-ca-trust update-mime-database uptime
updatedb update-pciids
update-desktop-database update-smart-drivedb
[meng@centos7 ~ 18:26:10]$ uptime
18:26:10 up 7:56, 3 users, load average: 1.67, 0.76, 0.82
[meng@centos7 ~ 18:26:19]$ uptime
18:26:19 up 7:56, 3 users, load average: 1.88, 0.84, 0.84
[meng@centos7 ~ 18:26:22]$ uptime
18:26:22 up 7:56, 3 users, load average: 1.89, 0.85, 0.85
[meng@centos7 ~ 18:26:23]$ uptime
18:26:23 up 7:56, 3 users, load average: 1.89, 0.85, 0.85
[meng@centos7 ~ 18:26:24]$ uptime
18:26:24 up 7:56, 3 users, load average: 1.89, 0.85, 0.85
[meng@centos7 ~ 18:26:25]$ uptime
18:26:25 up 7:56, 3 users, load average: 1.89, 0.85, 0.85
[meng@centos7 ~ 18:26:26]$ uptime
18:26:26 up 7:56, 3 users, load average: 1.90, 0.87, 0.85
[meng@centos7 ~ 18:26:27]$ uptime
18:26:27 up 7:56, 3 users, load average: 1.90, 0.87, 0.85
# 最终1分钟负载稳定接近1.90
# 虚拟机总共2个逻辑CPU,2个md5sum进程把CPU基本跑满
# Linux负载含义:逻辑CPU为2核,负载接近2代表CPU饱和
top 命令
作用:动态查看进程信息,包括不同状态任务数量,CPU消耗和内存消耗。

p 7:56, 3 users, load average: 1.89, 0.85, 0.85
[meng@centos7 ~ 18:26:24]$ uptime
18:26:24 up 7:56, 3 users, load average: 1.89, 0.85, 0.85
[meng@centos7 ~ 18:26:25]$ uptime
18:26:25 up 7:56, 3 users, load average: 1.89, 0.85, 0.85
[meng@centos7 ~ 18:26:26]$ uptime
18:26:26 up 7:56, 3 users, load average: 1.90, 0.87, 0.85
[meng@centos7 ~ 18:26:27]$ uptime
18:26:27 up 7:56, 3 users, load average: 1.90, 0.87, 0.85
最终1分钟负载稳定接近1.90
虚拟机总共2个逻辑CPU,2个md5sum进程把CPU基本跑满
Linux负载含义:逻辑CPU为2核,负载接近2代表CPU饱和
## top 命令
作用:动态查看进程信息,包括不同状态任务数量,CPU消耗和内存消耗。
[外链图片转存中…(img-1AcX9C6l-1784635133649)]


