24.Linuxあ进程管理
1|0一.进程介绍
1|11.进程
- 程序: 存放代码的文件(静态概念)
- 进程: 程序运行的过程(动态概念)
- 同一个程序可能对应多个进程
- 父进程: 程序运行时产生的第一个进程
- 子进程: 由父进程衍生出来的进程(比如在bash里再开一个bash)
- 如果父进程终止,子进程也会随之终止
- 进程是操作系统最核心的概念
1|22.并行与并发
- 并发: 多个任务看起来是同时运行的
- 并行: 多个任务真正的同时运行(只有多核再能实现并行)
1|33.线程
- 线程是进程内代码执行的过程
- 线程才是CPU上的执行单位
- 一个进程至少有一个线程
- 强调:CPU只做代码的运行,而不涉及I/O操作
1|44.任务三种状态
- 运行态
- 就绪态
- 阻塞态
- 不是阻塞态就是非阻塞态
1|55.提交任务的两种方式
- 同步
- 异步
- 例子
2|0二.进程信息的查看
2|11.ps aux 组合命令,查看进程信息
-a | 显示一个终端的所有进程 |
---|---|
-u | 选择有效的用户ID或者是用户名 |
-x | 显示没有控制终端的进程,同时显示各个命令的具体路径 |
2|22.命令显示结果
2|33.首行信息代表含义
USER | 运行进程的用户 |
---|---|
PID | 进程运行的ID号 |
%CPU | 进程占用CPU百分比 |
%MEM | 进程占用内存百分比 |
VSZ | 进程占用虚拟内存的大小(单位: KB) |
RSS | 进程占用物理内存的实际大小(单位: KB) |
TTY | 进程运行的终端(tty1, pts/0虚拟终端等) |
STAT | 进程运行过程中的状态(R S D T Z X < N s + l |) "man"查询 |
START | 进程启动时间 |
TIME | 进程占用CPU的总时间("0"表示还没有超过"1"秒) |
COMMAND | 程序运行指令,有[ ]代表内核态进程,没有[ ]代表用户态进程 |
-
VSZ : 是指已分配的线性空间大小, 这个大小通常并不等于程序实际用到的内存大小,(内存映射, 共享的动态库, 或向系统申请了更多的堆都会扩大线性空间)
-
RSS : 常驻内存大小, 即进程实际占用的物理内存大小
-
STAT进程状态
R | 进程运行 |
---|---|
S | 可中断睡眠(sleep),执行I/O操作可得到硬件设备响应 |
D | 不可中断睡眠, 执行I/O操作得不到硬件设备的响应 |
T | 停止的进程 |
Z | 僵尸进程 |
s | 大S后面的小s,代表包含子进程 |
< | 优先级较高的进程 |
N | 优先级较低的进程 |
+ | 前台运行的进程 |
|(管道符号) | 代表多进程 |
X | 死掉的进程(几乎看不见,死掉后就被回收了) |
l(小写l) | 以多线程的方式运行 |
- D状态与Z状态的进程都无法使用 kill -9 杀死
2|44.ps -elf 查看命令
- 选项
-e | 显示所有进程 |
---|---|
-f | 全格式 |
-l | 长格式 |
- 三种查看效果对比(PPID代表当前进程的父进程)
2|55.查看进程不同状态
- S+状态与T状态切换
- 查看 S+ R+ D+ 状态
2|66.查看进程树
2|77.动态查看用法top
-
常用选项
-d | 指定刷新时间(秒) |
---|---|
-p | 指定某个进程(PID) |
-u | 查看指定用户的进程 |
-
选项示例
⛅查看指定进程ID的进程信息
top -d 1 -p 11019
1秒刷新一次
⛅查看指定用户开启的所有进程信息
top -d 1 -u song1
1秒刷新一次
-
动态信息含义
⛅首行(可按小写L选择开启或关闭)
top | 当前时间 |
---|---|
up | 系统已运行时间 |
users | 登入的用户数量 |
load average | 平均负载(1分钟,5分钟,15分钟) |
⛅第二行
Tasks: 111 total | 表示有111个进程 |
---|---|
running | 正在运行的进程数 |
sleeping | 正在睡眠的进程数 |
stopped | 停止的进程数 |
zombie | 僵尸进程数 |
⛅第三行
%CPU(s):(按"1"可以展开) | 表示各种占用CPU的百分比 |
---|---|
us | 用户态占用CPU百分比 |
sy | 内核态占用CPU百分比 |
ni | nice值 |
id | 空闲CPU百分比 |
wa | cpu等待I/O完成时间 |
hi | 硬件中断占CPU百分比 |
si | 软件中断占CPU百分比 |
st | 被虚拟化偷走的CPU时间 |
⛅第四行
KIB Mem : | 物理内存 |
---|---|
total | 物理内存总空间 |
free | 空闲空间 |
used | 已用空间 |
buff / cache | 缓冲 / 缓存占用空间 |
⛅第五行
KIB Swap : | 交换分区大小 |
---|---|
total | 交换分区总空间 |
free | 空闲空间 |
used | 已用空间 |
avail Mem | 可用内存 |
⛅信息字段含义补充
PR | 优先级(比 NI 大 20) |
---|---|
NI | nice值,也表示优先级 |
VIRT | 虚拟内存(线性空间) |
RES | 进程当前使用的内存大小 |
SHR | 共享内存 |
-
进程信号
⛅kill -l
列出当前系统支持的信号
⛅常用信号
编号 | 含义 | 作用 |
---|---|---|
1 | SIGHUP | 不用重启进程直接重新加载配置文件 |
9 | SIGKILL | 强制杀死进程(D,Z杀不死) |
15 | SIGTERM | 终止进程, kill默认就是这个信号 |
18 | SIGCONT | 让被停止的进程恢复运行 |
19 | SIGSTOP | 暂停进程 |
⛅信号使用示例(使用信号18,19)
⛅信号使用示例2(使用信号1)
⛅根据进程名杀死所有进程
⛅查看某个用户开启的进程
-
TOP常用内部命令
s(默认3秒) | 修改刷新时间,建议不要设置很小,会消耗CPU资源 |
---|---|
q | 退出,或者是 Ctrl + c |
M | 按照内存占用率大小从大到小排序 |
P | 按照CPU占用率从大到小排序 |
N | 按照PID从大到小排序 |
(R) | 以上配合R可进行倒序 |
(shift + > <) | 以上配合左右可进行左右字段选择 |
f | 增加显示的字段,空格键选择 |
k | 发送信号 |
数字 "1" | 展开显示所有的CPU信息 |
z | 变颜色 |
"⬆"," ⬇" | 向上向下进行翻页查看 |
r | 调整进程优先级 |
__EOF__
本文作者:ଲ小何才露煎煎饺
本文链接:https://www.cnblogs.com/zeny/articles/14443898.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/zeny/articles/14443898.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:ଲ小何才露煎煎饺,转载请注明原文链接:https://www.cnblogs.com/zeny/articles/14443898.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报