红帽Linux-监控和管理Linux进程

1.1 进程的定义

什么是进程?

进程是正在运行的程序。它包括以下关键部分:

  • 内存地址空间:每个进程都会分配一个虚拟内存空间。

  • 安全属性:包括所有权、特权、以及是否可以访问特定资源。

  • 线程:每个进程可以有一个或多个线程来执行任务。

  • 进程状态:一个进程可以处于不同的状态,例如运行、等待等。

每个进程的环境包括:

  • 本地变量和全局变量

  • 当前调度上下文

  • 分配的系统资源,如文件和网络端口

进程的生命周期

在 RHEL9 中,进程的生命周期是通过父进程 fork (复制地址空间)来创建新的子进程。每个进程都有一个唯一的进程 ID(PID)。父进程在子进程运行时通常处于睡眠状态,等待子进程完成并清理资源。子进程结束后可能成为 僵尸进程(Zombie),父进程会接收到信号并清理这些进程资源。

在 RHEL9 中,系统的第一个进程是 systemd,负责管理所有其他服务。


1.2 描述进程状态

进程状态的分类

进程的状态在 pstop 命令中可以查看。常见的进程状态包括:

  • R:运行中或可运行

  • S:睡眠中,等待某些事件

  • D:不可中断的睡眠状态,通常是等待 I/O

  • Z:僵尸进程,已经结束,但父进程尚未清理

  • T:停止的进程,可能是被暂停或跟踪

查看进程

使用 ps 命令列出进程时,我们可以查看每个进程的以下信息:

  • 进程的用户 UID

  • 进程的 PID

  • CPU 时间

  • 内存分配量

  • 进程的控制终端

  • 当前进程的状态

复制代码

ps aux # BSD 格式 ps -ef # SysV 格式

ps --forest:以树形结构显示进程关系(父子进程)

2.1 描述作业和会话(Job and Session)

作业控制(Job Control)

在 Linux 中,作业控制是 shell 的一种功能,允许一个 shell 实例管理多个命令。每个终端(TTY)只能有一个前台作业,所有其他作业都是后台作业。

进程与会话的关系

  • 会话:由一个终端启动,包含一个前台进程和任意数量的后台进程。

  • 作业:一个终端上的一个作业通常对应一个进程。

查看作业状态

  • 使用 jobs 命令列出后台作业。

  • 使用 fg %jobid 将后台作业切换到前台。

  • 使用 ctrl+z 将前台进程放到后台并暂停运行。


2.2 在后台运行作业

如何在后台运行命令

在命令后加 &,即可将命令放入后台运行,shell 会继续显示提示符。

复制代码

command &

管理后台作业

  • jobs:查看当前所有后台作业

  • fg %jobid:将指定作业从后台切换到前台

  • bg %jobid:恢复后台作业运行


3.1 使用信号控制进程

信号(Signals)

信号是进程间的通信方式,通常用来报告事件或控制进程。常见信号类型包括:

  • TERM(15):请求进程终止,正常退出。

  • KILL(9):强制结束进程,不会进行清理。

  • STOP(19):暂停进程,等待恢复。

  • CONT(18):继续运行被暂停的进程。

使用 kill 命令

  • kill PID:发送信号到进程。

  • kill -l:列出所有可用的信号。

  • kill -9 PID:强制终止进程。

通过名称发送信号

使用 pkill 命令根据进程名称、用户或其他属性发送信号:

复制代码

pkill -f <pattern> # 通过匹配模式杀死进程


4.1 描述负载平均值(Load Average)

什么是负载平均值?

负载平均值表示一定时间内系统的平均负载,通常由以下三个数值表示:

  • 1分钟负载

  • 5分钟负载

  • 15分钟负载

负载数值反映了系统上正在执行的进程数以及等待 CPU 资源的进程数。如果负载值远大于 CPU 核心数,表示系统超载。

复制代码

uptime # 查看负载平均值 lscpu # 查看 CPU 核心数


4.2 解读 Load Average

使用 uptime 命令查看负载平均值。将负载数值除以 CPU 数量(如果启用了超线程技术,计算逻辑核心)可以评估系统资源是否饱和。

  • 负载值 < 1:资源利用率适当

  • 负载值 > 1:系统资源饱和,存在延迟

  • 负载值远大于 CPU 核心数:说明系统压力过大


4.3 实时进程监控

使用 top 命令

top 命令用于实时查看系统负载、进程状态等。默认情况下,每 5 秒刷新一次。

复制代码

top

常见输出信息
  • PID:进程 ID

  • USER:进程所有者

  • VIRT:虚拟内存使用

  • RSS:实际内存使用

  • STAT:进程状态


小结

  • 进程在 RHEL9 中有明确的生命周期,包括父子进程、资源管理、状态切换等。

  • 使用 pstop 等工具监控进程,理解 SRZ 等进程状态。

  • 使用信号控制进程的暂停、终止和恢复。

  • 系统负载的监控通过 uptimeload average 来反映,合理评估系统性能。

相关推荐
maosheng11462 小时前
HCIP的OSPF进阶综合实验
linux·运维·服务器
开开心心就好2 小时前
内存清理工具开源免费,自动优化清理项
linux·运维·服务器·python·django·pdf·1024程序员节
fy zs2 小时前
NAT ,代理服务器和内网穿透:内网设备通信的底层逻辑
linux·运维·服务器
杨江2 小时前
onlyoffice的安装
运维
Gofarlic_OMS2 小时前
如何将MATLAB网络并发许可证闲置率降至10%以下
大数据·运维·服务器·开发语言·人工智能·matlab·制造
佑白雪乐3 小时前
<Linux基础第3集>清华镜像源配置+网络基础概念理解(IP地址+网卡+网关+子网掩码+DNS...)
linux·网络·tcp/ip
代码AC不AC3 小时前
【Linux】进程优先级和进程切换
linux·进程·进程优先级·进程切换调度算法
Configure-Handler3 小时前
ubuntu 22.04 配置VNC远程连接
linux·运维·ubuntu
一个平凡而乐于分享的小比特3 小时前
Makefile 源码编译系统详解
linux·makefile