云原生大佬重生,记忆逐步复苏(八:监控和管理linux进程)
目录
1:什么是进程
进程的本质就是一个运行中程序的实例,在操作系统上是调度与分配资源的基本单位。
1.1进程的构成
(1)分配的内存区域
进程在运行时会分配一系列的内存区域,包括:
代码段(Text Segment):存储可执行代码。
数据段(Data Segment):存储全局变量和静态变量。
堆(Heap):动态分配内存的区域。
栈(Stack):存储局部变量和函数调用的上下文。
内存映射区(Memory Mapping Area):用于映射文件、设备或其他内存区域。
(2)一个或多个线程
在现代操作系统中,进程可以包含多个线程。线程是进程的执行单元,共享进程的内存空间和其他资源。Linux中的线程通过pthread库或clone系统调用实现。每个线程有自己的程序计数器(PC)、栈和寄存器状态,但它们共享进程的代码段、数据段和堆。
(3)进程状态
进程在运行过程中会处于不同的状态,这些状态由进程控制块(PCB)记录,包括:
运行态(Running):进程正在CPU上运行。
就绪态(Ready):进程准备好运行,但正在等待CPU调度。
阻塞态(Blocked):进程因等待某些事件(如I/O操作)而暂时停止运行。
僵尸态(Zombie):进程已经结束,但其父进程尚未读取其状态信息。
(4)所有权凭据和特权
进程运行时需要一定的权限和凭据来访问系统资源,这些包括:
用户ID(UID)和组ID(GID):标识进程的所有者和所属用户组,用于访问控制。
有效用户ID(EUID)和有效组ID(EGID):用于权限检查,可能与实际用户ID不同。
特权级别(Privilege Level):Linux使用用户态和内核态来区分权限级别,内核态具有更高的权限,可以访问系统的核心资源。
1.2 进程的环境配置
每一个进程在创建前都会进行相应的环境配置,包括
- 从父进程继承环境变量
- 创建一个或多个线程
- 文件描述符绑定
- Selinux上下文绑定
- PCB创建存储进程的状态,PID和响应信息
1.3 进程的运行状态
-running(R) :程序正在运行
-runnable(R):程序正在就绪,等待分配cpu资源就开始运行
-stopped(T):程序被暂停了
-zombie (Z):程序已经执行完毕了,除PID还没有释放,其它系统资源已经全部释放,等待父进程查看并释放PCB资源
-TASK-INTERUPTABLE(S):可中断睡眠,可接受信号退出睡眠状态,
-TASK-UNITERUPTABLE(D):不可中断睡眠,不接受信号
2 什么是作业
作业是linux中为了方便交互式shell管理前台进程和后台进程而生成的概念,包含一到多个进程,由管道符和命令共同组成
案例:cat /etc/passwd | grep mysql
前台程序:可以霸占终端的交互,接受信号
后台程序:不可以享受到与终端的交互,不能接受来自终端的信号,但可以输出到终端
一个终端会话只能有一个前台作业和多个后台作业
前台作业比如说是shell程序或者正在shell中运行的程序
后台作业就是同样依赖终端,但不在前台显示的一系列程序
运行后台的作业方式就是在命令后面加上一个&号
案例:cat /etc/passwd &
-查看所有后台作业:jobs -l (查看所有后台作业和UID)
-将后台作业放在前台运行:fg %number

-暂停前台作业,并把它放在后台上:ctrl + Z
-继续执行后台作业:bg %number
![]()
备注:+符号表示当前默认作业,-符号表示下一个成为默认作业的进程,没有%number时就会选择默认作业


所有后台作业只有三种状态:running,stopped,complete
3:如何传递信号
信号是一种传递给进程的软件中断,可以通过外部错误,显示命令输入,和终端输入来传递信号
信号的种类和作用如下:
如何显式发送信号
-使用kill命令
kill 命令的基本语法如下:
kill [选项] <进程ID> [进程ID...]
最常用的选项
无选项:默认发送 SIGTERM(终止信号)。
kill <PID>
这会向指定的进程发送 SIGTERM 信号,请求进程终止。
-9:发送 SIGKILL 信号,强制终止进程。
kill -9 <PID>
SIGKILL 信号不能被进程捕获或忽略,因此可以强制终止进程。
-15:显式发送 SIGTERM 信号(与默认行为相同)。
kill -15 <PID>
-1:发送 SIGHUP 信号,常用于重新加载配置文件。
kill -1 <PID>
-2:发送 SIGINT 信号,类似于按下 Ctrl+C。
kill -2 <PID>
-0:检查进程是否存在,但不发送信号。
bash
复制
kill -0 <PID>
如果进程存在,返回状态码为 0;否则返回非零值。
发送信号给作业
除了通过进程ID(PID)发送信号,kill 命令还可以通过作业编号(Job ID)发送信号。作业编号可以通过 jobs 命令查看。
发送信号给作业:
kill %<JobID>
例如:
kill %1
这会向作业编号为 1 的后台作业发送 SIGTERM 信号。
强制终止作业:
kill -9 %1
备注:kill -l可以列出所有的信号
-使用pkill(process kill)命令
作用;选择符合条件(包括用户,组,命令名称,时间线,终端,会话)的进程发送信号
案例:终止后台作业

Pgrep(process grep)可以筛选出符合条件的进程信息

案例:查看出kiosk用户的所有进程
命令:pgrep -l -u kiosk
4:如何监控进程活动
在 Linux 系统中,负载平均值(Load Average) 是衡量系统当前负载的一个重要指标。它反映了系统中等待运行的进程数量,通常用于评估系统的繁忙程度和性能状态。负载平均值通常显示为三个数字,分别表示过去1分钟、5分钟和15分钟内的平均负载。
1. 负载平均值的含义
负载平均值表示系统中等待运行的进程数量,包括等待 CPU 时间的进程(R)和正在网络或者磁盘IO的进程数(D)。它是一个无单位的数值,通常用来衡量系统的负载情况:
数值小于1:表示系统中的 CPU 大部分时间是空闲的。
数值等于1:表示系统中的 CPU 刚好被充分利用。
数值大于1:表示系统中的 CPU 负载较高,有多个进程在等待 CPU 时间。
备注:要关注系统的逻辑cpu数量
- 可以使用top命令来监控进程信息
top 是一个非常强大的实时系统监控工具,用于显示当前系统中占用资源最多的进程和系统资源的使用情况。它提供了关于CPU、内存、交换空间、I/O 等的详细信息,并且可以动态更新(3秒刷新一次),方便用户实时监控系统的性能。
Top命令的输出分为两部分
第一部分:系统主要情况摘要
包含了以下信息
- 当前系统时间
- 用户数
- 负载平均值
- 总进程数和不同状态的进程数
- %us:用户态 CPU 使用率(用户进程占用 CPU 的时间百分比)。
- %sy:内核态 CPU 使用率(内核进程占用 CPU 的时间百分比)。
- %ni:用户态进程的nice值(优先级调整)占用的 CPU 时间百分比。
- %id:CPU 空闲时间百分比。
- %wa:CPU 等待 I/O 操作的时间百分比。
- %hi:硬件中断占用的 CPU 时间百分比。
- %si:软件中断占用的 CPU 时间百分比。
- %st:CPU 被虚拟机偷走的时间百分比(仅在虚拟化环境中显示)。
- 内存总量和空闲,缓存和已使用量
- 交换空间总量和空闲的,已使用的交换空间
第二部分:进程表
进程列表显示在 top 窗口的下半部分,列出了当前系统中占用资源最多的进程。默认情况下,进程按 CPU 使用率排序,但可以通过交互式命令更改排序方式。

包含了以下信息
top 命令提供了丰富的交互式指令,允许用户在运行时动态调整显示内容、排序方式、过滤进程等。以下是一些常用的交互式指令:
1. 帮助
h 或 ?:显示帮助信息,列出所有可用的交互式命令。
2. 刷新频率
s:设置刷新间隔时间。按下后输入新的时间间隔(单位为秒或毫秒)。
3. 排序
o 或 O:按指定列排序(如按 CPU 使用率、内存使用率等)。
P:按 CPU 使用率(%CPU)降序排序。
M:按内存使用率(%MEM)降序排序。
T:按运行时间(TIME+)降序排序。
4. 进程管理
k:杀死进程。按下后输入进程的 PID 和要发送的信号(默认为 SIGTERM)。
r:调整进程的优先级(nice 值)。按下后输入进程的 PID 和新的 nice 值。
5. 显示选项
f 或 F:进入字段选择模式,允许用户选择或隐藏某些列。
a:切换显示所有进程(包括僵尸进程)。
i:切换显示进程的交互模式,忽略僵尸进程。
n 或 #:设置显示的进程数量。
6. 过滤和高亮
u:按用户过滤进程。按下后输入用户名或用户ID,仅显示该用户拥有的进程。
p:按进程ID过滤进程。按下后输入进程ID,仅显示指定的进程。
H:切换显示线程。默认情况下,top 显示进程,但可以通过此选项切换到线程视图。
l:切换显示负载平均值和系统摘要信息。
m:切换显示内存信息。
t:切换显示任务(进程)摘要信息。
c:切换显示完整的命令行(默认显示进程名)。
7. 其他
q:退出 top。
< 或 >:在字段选择模式中,移动光标到上一个或下一个字段。
+ 或 -:在字段选择模式中,增加或减少字段的显示顺序。
能坚持看到这里真是不容易啊,不仅你在记忆复苏的道路上迈出了一大步,你更是在意志上领先了很多人,你现想必已经基本掌握了关于监控进程的相关信息,恭喜你,假以时日你必会重登巅峰的,相信你自己,少年(另外求求赞,收个藏啥的,还可以成为我的粉丝)。

更多推荐
所有评论(0)