当前位置: 首页 > backend >正文

Linux系统的进程管理

一、进程查看命令

 1、pstree

用于查看进程树之间的关系,谁是父进程,谁是子进程,可以清楚的看出来是谁创建了谁 

用法:

pstree    [选项]

选项:

选项作用
-A:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误
-P同时列出每个进程的PID

2、ps

显示系统当前进程瞬间运行状态

用法:
ps   [选项]  

选项:

选项作用
-A显示现行终端机下的所有进程,包括其他用户的进程
-U以用户为主的进程状态

输出解析:

- `USER`:进程的所有者。
- `PID`:进程的 ID。
- `%CPU`:进程占用的 CPU 百分比。
- `%MEM`:进程占用的内存百分比。
- `VSZ`:进程使用的虚拟内存大小。
- `RSS`:进程使用的物理内存大小。
- `TTY`:进程所在的终端。
- `STAT`:进程的状态,如`S`(休眠)、`R`(运行)、`Z`(僵尸进程)等。
- `START`:进程的启动时间。
- `TIME`:进程运行的时间。
- `COMMAND`:启动进程的命令。

进程状态:

S:休眠

s:父进程

R:运行

Z:僵尸进程(前台程序已死,但后台驻留进程没有正常退出;后果就是占用资源不干活。)

在Linux中,使用 `ps aux` 命令可以查看当前运行的进程及其详细信息。输出的每一列代表不同的信息,其中 **STAT**(或 `S`)列表示进程的**状态(Process State)**,即进程的类型或当前行为。

ps aux输出的进程状态(STAT)详解

其中 STAT 列 的字母组合表示进程的状态,常见的状态组合有:

Ss:会话领导者(`s`),处于可中断睡眠(`S`),如 `bash` 终端进程。
Ssl:多线程(`l`)的会话领导者(`s`),如 `systemd`。
R+:前台运行(`+`)的进程(`R`),如 `top` 命令。
D:不可中断睡眠(`D`),常见于磁盘I/O密集型任务(如 `dd` 命令)。
Z:僵尸进程(`Z`),需要父进程回收资源。
I<:内核空闲线程(`I`),低优先级(`<`)。

 如何查看进程状态?

1、ps aux(显示所有进程)


ps   aux  |   grep   nginx

   输出示例:
root      1234  0.0  0.1  12345  6789 ?        S    May30   0:00 nginx: worker process

    S`表示 nginx 处于可中断睡眠(等待请求)。

2. ps -efj`(显示进程父子关系)
ps   -efj

   可查看 `PPID`(父进程ID)和 `STAT` 状态。

3. top / htop动态查看进程状态):
top

    在 top中,列同样表示进程状态。

ps -elf` 是 Linux 中查看进程信息的常用命令之一,它以长格式(`-l`)和完整格式(`-f`)显示所有进程(`-e`),并提供更详细的进程状态信息。以下是 `ps -elf` 的详细解析:

ps -elf` 命令详解

-e:显示所有进程(等同于 -A)。
-l:长格式输出,显示更多字段(如 F、S、PRI、NI)。
-f:完整格式输出,显示完整的命令行(CMD)和用户信息。

 关键字段详解

1. 进程状态(`S` 列)

与 `ps aux` 的 `STAT` 列相同,常见状态包括:

R:运行中(Running)。
S:可中断睡眠(Interruptible Sleep,等待事件)。
D:不可中断睡眠(Uninterruptible Sleep,通常与磁盘I/O相关)。
Z:僵尸进程(Zombie)。
T:已停止(Stopped,如被 `SIGSTOP` 暂停)。
I:空闲(Idle,内核线程)。

2. 优先级(`PRI` 和 `NI`)

PRI:进程的实际优先级(由内核动态调整,数值越小优先级越高)。
NI:Nice值(用户可调整的优先级修正值):
20:最高优先级(抢占更多CPU)。
19:最低优先级(CPU友好,适合后台任务)。

3. WCHAN 列

 显示进程当前等待的内核事件(如 `poll`、`futex`)。
若为 `-`,表示进程正在运行或无需等待。

常用组合命令

1. 查找特定进程

ps  -elf  |  grep  nginx

2. 查看进程树(父子关系)

ps  -elf  --forest

3. 按CPU或内存排序

ps  -elf  --sort=%cpu  # 按CPU降序
ps -elf --sort=-%mem  # 按内存降序

4. 查看僵尸进程

ps  -elf  |  grep  Z

3、pgrep

查看进程的信息,包括进程是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。 pgrep通过匹配其程序名,找到匹配的进程

选项:

-l同时显示进程名和PID
-o当匹配多个同一命令启动的进程时,显示进程号最小的那个

注意:#pgrep命令用来查找进程的信息,通常会和kill命令来连用,在指定条件下kill问题进程

http://www.xdnf.cn/news/19376.html

相关文章:

  • Unity3D Gizmos 调试可视化
  • Qt中UDP回显服务器和客户端
  • 第二十七天-ADC模数转换实验
  • python反转字符串
  • 三维重建模型、3DGS、nerf、 mip-nerf
  • 《WINDOWS 环境下32位汇编语言程序设计》第9章 通用控件(2)
  • 点接触混合润滑完整数值解
  • 免税商品优选购物商城系统|java技术开发
  • MATLAB R2010b系统环境(三)MATLAB操作界面
  • JavaWeb01
  • 【Linux】创建线程
  • 基于K8s部署Redis高可用
  • mit6.031软件构造 笔记 Testing
  • Redis进阶(上)
  • Win11输入法异常解决方案
  • 智能合约安全全解析:常见漏洞、真实案例与防范实践
  • 机器视觉学习-day14-绘制图像轮廓
  • 【机器学习基础】监督学习算法的现代理解:从经典方法到无人驾驶与生成式AI的实践应用
  • [光学原理与应用-353]:ZEMAX - 设置 - 可视化工具:2D视图、3D视图、实体模型三者的区别,以及如何设置光线的数量
  • 财务的三张报表:现金流表、利润表、资产负债表
  • Spring/Spring MVC/iBATIS 应用 HTTP 到 HTTPS 迁移技术方案
  • 基于i.MX6ULL的RAM Disk驱动开发
  • 【开题答辩全过程】以 付费自习室系统小程序为例,包含答辩的问题和答案
  • 【编号186】中国劳动统计年鉴(1991-2023)
  • kafka服务端架构总览
  • 【C++】显示与隐式加载dll的使用与区别
  • 技术框架之RPC
  • 【系统分析师】高分论文:论信息系统的安全与保密设计
  • c++ 线程局部存储(Thread-Local Storage,TLS)
  • 当服务器报警响起:CPU、内存、磁盘使用率飙升的诊断与处置