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

6. linux shell命令(3)进程管理相关命令

3. linux进程管理相关命令


3.1 进程的概念


  • 编译程序上的两个进程

在这里插入图片描述

3.2 使用ps命令查看进程

  • ps 命令

  • 显示进程 (process) 的动态

  • 语法:
    ps [options]

  • 常见的参数:
    -A 列出所有的行程
    -w 显示加宽可以显示较多的资讯
    -au 显示较详细的资讯
    -aux 显示所有包含其他使用者的行程

在这里插入图片描述
这是 Linux 系统下执行 ps -au 命令的输出,用于查看当前系统中用户进程的详细状态,可以从这些信息理解系统的进程运行情况:

各列含义与关键进程解读

  • 列说明USER(进程所属用户)、PID(进程ID)、%CPU(CPU占用率)、%MEM(内存占用率)、VSZ(虚拟内存大小)、RSS(物理内存使用量)、TTY(关联的终端)、STAT(进程状态)、START(启动时间)、TIME(CPU总占用时间)、COMMAND(进程对应的命令)。

  • 关键进程

    • 多个 root 用户的 /sbin/getty 进程(如 PID 865870 等):这是系统“终端登录服务”的进程,负责在 tty2tty3 等虚拟终端上提供登录界面。
    • root 用户的 /usr/bin/X 进程(PID 1121):这是X Window 系统的服务进程(图形界面的核心服务),能看到它占用了 3.0% CPU、3.3% 内存,且已运行 1 小时 25 分钟,说明系统在提供图形界面支持。
    • linux 用户的 bash 进程(如 PID 26263202):bash 是 Linux 默认的命令行解释器(Shell),这些是当前用户打开的终端会话。
    • 最后一行 linux 用户的 ps -au 进程(PID 4812):就是当前执行 ps -au 命令本身的进程(用于查看进程,所以自己也会显示在列表里)。

整体来看,系统进程运行比较简洁,图形界面服务(X 进程)、终端登录服务(getty)、用户 Shell 会话都在正常运行,没有明显“异常高占用”的进程。

在这里插入图片描述

  • 进程的状态标志

D: 不可中断的静止
R: 正在执行中
S: 阻塞状态
T: 暂停执行
Z: 不存在但暂时无法消除
<: 高优先级的进程
N: 低优先级的进程
L: 有内存分页分配并锁在内存中


top命令

  • 监视进程
  • 通常会全屏显示,而且会随着进程状态的变化不断更新
  • 整个系统的信息也会显示,为查找问题提供了便利
  • 可以显示系统总共有多少CPU和内存资源以及负载平衡等信息。

在这里插入图片描述

如图,这是 Linux 系统中 top 命令的输出,用于实时监控系统进程与资源占用,以下分模块解释:

一、系统概览(最上方行)

  • top - 00:22:00:当前系统时间;
  • up 54 min:系统已运行 54 分钟;
  • 2 users:当前有 2 个用户登录系统;
  • load average: 0.07, 0.03, 0.07系统负载平均值(分别对应 1 分钟、5 分钟、15 分钟的负载)。数值越低,说明系统越“空闲”(这里数值都很小,系统很轻松)。

二、任务(Tasks)统计

  • 187 total:系统总共有 187 个进程(进程是程序的运行实例);
  • 2 running:当前仅 2 个进程在“主动占用 CPU 运行”
  • 185 sleeping185 个进程处于“睡眠/等待”状态(比如等网络、等用户操作,暂时不消耗 CPU);
  • 0 stopped没有进程被“暂停”(比如被 Ctrl+Z 暂停的进程数为 0);
  • 0 zombie没有“僵尸进程”(僵尸进程是进程已结束但资源未回收的异常状态,此处系统很健康)。

三、CPU 使用率(%Cpu(s))

把 CPU 总时间看作 100%,各部分是 CPU 时间的分配比例:

  • 3.3 us3.3% 的时间用于“用户程序”(比如你运行的终端、图形界面等应用);
  • 0.0 sy0% 的时间用于“系统内核”(内核处理硬件驱动、内存管理等底层工作);
  • 0.0 ni0% 的时间用于“优先级调整的进程”nice 值控制进程优先级,此处无特殊优先级进程占 CPU);
  • 96.7 id96.7% 的时间 CPU 是“空闲”的(说明 CPU 大部分时间没事干,系统整体很闲);
  • 0.0 wa0% 的时间 CPU 在“等 IO(输入/输出)”(比如等硬盘读数据、网卡收包,IO 很顺畅);
  • 0.0 hi/0.0 si硬中断、软中断的 CPU 时间占比为 0%(硬中断是硬件紧急响应,软中断是系统内部异步事件,此处都没占用 CPU);
  • 0.0 st0% 的时间是“被虚拟机 hypervisor 抢占的 CPU 时间”(若为物理机,这一项通常为 0;若为虚拟机,此值表示被宿主机抢走的时间,此处说明是物理机或虚拟机未被抢占)。

四、内存与交换分区(KiB Mem / KiB Swap)

  • 物理内存(Mem)

    • 1025492 total:物理内存总容量约 1GB(单位 KiB,1GB≈1048576 KiB,接近 1GB);
    • 844496 used:已用内存约 824MB
    • 180996 free:空闲内存约 176MB
    • 7260 buffers:约 7MB 用作“缓冲区”(临时存硬盘/网卡数据,加速 IO)。
  • 交换分区(Swap)

    • 1046524 total:交换分区(虚拟内存)总容量约 1GB
    • 295824 used:已用交换分区约 288MB(物理内存不足时,会把数据临时放交换分区,此处使用量不高);
    • 750700 free:空闲交换分区约 733MB
    • 249084 cached Mem:约 243MB 是“缓存”(系统把常用数据暂存内存加速访问,属于“可回收”内存,不算真正压力)。

五、进程列表(表头 + 具体进程)

表头解释:
  • PID:Process ID,进程唯一标识(每个进程的“身份证号”);
  • USER进程所属的用户
  • PR:Priority,进程优先级(数值越小,优先级越高,越容易抢占 CPU);
  • NI:Nice 值,调整进程优先级的参数(范围 -20 ~ 19,值越小,进程优先级越高);
  • VIRT:Virtual Memory,进程使用的虚拟内存总量(包含程序代码、已分配但未使用的内存等);
  • RES:Resident Memory,进程实际占用的物理内存(常驻内存,不包括交换出去的部分);
  • SHR:Shared Memory,进程与其他进程共享的内存量
  • S:Status,进程状态S 表示“睡眠/等待”,R 表示“运行”,Z 表示“僵尸”等);
  • %CPU进程当前的 CPU 占用率
  • %MEM进程当前的物理内存占用率
  • TIME+进程累计占用的 CPU 时间(更精确的格式);
  • COMMAND进程对应的命令/程序名
关键进程解读:
  • PID 2346(用户 linux,命令 compiz):
    Ubuntu 桌面的窗口管理器(负责图形特效、窗口布局等),占 10.4% 内存(图形界面的主要内存消耗者,属于正常现象),CPU 占用 0.3%,已运行 23.59 秒。

  • PID 1311/PID 2403(用户 root/linux,命令 vmtoolsd):
    虚拟机工具进程(若系统运行在虚拟机中,用于增强虚拟机与宿主机的交互),资源占用较低。

  • PID 2619(用户 linux,命令 gnome-termi+):
    截断显示的 gnome-terminal(终端程序),是你当前操作的终端,占 1.1% 内存、0.3% CPU。

  • PID 1(用户 root,命令 init):
    系统1 号进程,负责启动系统服务,是所有进程的“祖先”,资源占用极低。

  • 其他 root 用户的内核线程(如 kthreaddksoftirqd 等):
    系统底层核心进程,负责 CPU 调度、中断处理等基础工作,通常资源占用低,保障系统稳定运行。

整体结论

系统运行稳定、资源充足:CPU 空闲率高达 96.7%,内存和交换分区压力小,进程以桌面环境、虚拟机工具和系统核心进程为主,无异常高占用的“流氓进程”,属于健康且空闲的状态。

pstree命令

  • 将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以init这个基本进程为根,如果有指定使用者id, 则树状图会只显示该使用者所拥有的进程。

  • 参数:

    • -a 显示该进程的完整指令及参数, 如果是被记忆体置换出去的进程则会加上括号
    • -c 如果有重覆的进程名, 则分开列出

3.3 使用kill命令终止进程

kill 是 Linux 中用于**向进程发送“信号(Signal)”**的命令,通过信号控制进程行为(如退出、重启、暂停等),并非只能“杀死”进程。以下是核心用法:

一、基本语法

kill [选项] 信号 进程ID(PID)...
  • [选项]:控制信号发送的行为(如查看信号、指定信号方式)。
  • 信号:可通过编号(如 9)或名称(如 SIGKILL)指定。
  • 进程ID(PID):进程的唯一标识,可通过 pspgrep 等命令查询。

二、常用选项

选项作用示例
-l列出所有信号的名称与编号kill -l(输出类似 1) SIGHUP 2) SIGINT...9) SIGKILL...
-s 信号名指定信号名称发送kill -s SIGTERM 1234(给 PID 1234 发“优雅终止”信号)
-n 信号编号指定信号编号发送kill -n 15 1234(效果同上,SIGTERM 编号为 15)
-9发送 SIGKILL(强制终止进程,最常用“强杀”)kill -9 1234(进程无法忽略,直接被终止)
-0检查进程是否存在(不发信号)kill -0 1234(进程存在则无输出,否则报错)
-v详细模式(显示信号发送结果)kill -v -s SIGTERM 1234(提示信号是否发送成功)

三、核心信号(进程对信号的响应)

信号是 kill 的核心,不同信号让进程执行不同操作。常用核心信号:

信号编号信号名称作用特点
1SIGHUP挂起/重启进程常用于守护进程(如 Nginx)重新加载配置,无需停止服务
2SIGINT中断进程等同于终端按 Ctrl+C,进程通常会“优雅退出”
9SIGKILL强制终止进程进程无法忽略/捕获,直接被内核终止(慎用,可能丢失数据)
15SIGTERM终止进程(默认信号)进程可选择忽略/捕获,是“优雅终止”的首选(给进程清理资源的机会)
18SIGCONT继续运行进程恢复被 SIGSTOP 暂停的进程
19SIGSTOP暂停进程等同于终端按 Ctrl+Z,进程暂时停止、不占 CPU

四、实战示例

1. 优雅终止进程(默认发 SIGTERM
kill 1234  # 给 PID 1234 的进程发 SIGTERM,请求优雅退出
2. 强制终止进程(发 SIGKILL
kill -9 1234  # 或 kill -s SIGKILL 1234,强制终止进程
3. 重启进程(以 Nginx 为例,发 SIGHUP
kill -1 $(pgrep nginx)  # pgrep 查 Nginx PID,再发 SIGHUP 让其重载配置

kill -1 $(pgrep nginx) 中,$Linux Shell(如 bash)“命令替换”语法的一部分,具体作用是:

核心逻辑:“先执行子命令,再替换结果”

$(...)先运行括号内的 pgrep nginx 命令,然后pgrep nginx 的输出结果,替换回 $(...) 所在的位置,最终让 kill 命令作用于这些结果。

分步解释这条命令:

  1. 执行 pgrep nginx
    pgrep 是专门用于**根据进程名查找“进程ID(PID)”**的命令。运行后,它会找出所有名称为 nginx 的进程,并输出这些进程的 PID(比如假设输出 1234)。

  2. 命令替换 $(pgrep nginx)
    Shell 会把 pgrep nginx 的输出(如 1234),替换到 $(...) 的位置。此时命令会变成 kill -1 1234

  3. 执行 kill -1 1234
    kill -1 会向 PID 为 1234 的进程发送 SIGHUP 信号(信号 1),而 nginx 收到 SIGHUP 后,通常会重新加载配置文件(实现“优雅重启”,无需停止服务)。

总结

$ 参与的 $(...) 语法,让你可以把“查进程ID”和“发信号控制进程”两个操作合并成一条命令,自动化完成“先找 nginx 进程,再向它发信号”的流程。

4. 暂停与恢复进程
kill -19 1234  # 暂停 PID 1234 的进程(类似 Ctrl+Z)
kill -18 1234  # 恢复被暂停的进程
5. 批量终止同名进程(结合 pkill

若不知道 PID 但知道进程名(如 firefox),用 pkill 按名匹配:

pkill -9 firefox  # 强制终止所有名为 firefox 的进程

五、注意事项

  1. 权限:普通用户只能终止自己的进程root(或 sudo)可终止任意进程。
  2. 信号优先级:优先用 SIGTERM(给进程清理资源的机会),无响应时再用 SIGKILL 强制终止。
  3. 僵尸进程:状态为 Z 的僵尸进程无法用 kill 终止,需重启其父进程回收资源。
  4. 暂停的进程:被 SIGSTOP 暂停的进程,需先用 SIGCONT 恢复,再终止。

掌握这些后,你可以灵活用 kill 精细化控制进程行为~


http://www.dtcms.com/a/445938.html

相关文章:

  • 临清网站优化做网站必须托管服务器吗
  • 依赖注入的好处和不用依赖注入的对比
  • KAN(Kolmogorov-Arnold Networks)通俗理解
  • 李飞飞物理世界 AI:价值维度、技术瓶颈与突破路径研究
  • 企业网站建设网站优化推广网站开发连接效果
  • k8s学习(二)——kubernetes整体架构及组件解析
  • K8s学习笔记(十三) StatefulSet
  • k8s学习-pod的生命周期
  • 校园网站建设申请报告企业网站建设在国内现状
  • php 8.4.1 更新日志
  • VR大空间资料 01 —— 常用VR框架对比
  • 重庆渝中区企业网站建设哪家专业建湖人才网官网登录
  • 【Linux】IP
  • 近红外相机在机器视觉检测中的应用
  • 【QT常用技术讲解】multimedia实现指定分辨率打开摄像头
  • 阿里巴巴网站的搜索引擎优化案例邢台做网站的价格究竟多少钱?
  • 一个学校随机点名系统(代excel 自定义导入名字,+随机点名)
  • 苍穹外卖-缓存商品、购物车功能
  • 海南住房和城乡建设厅网站首页建站之星怎么使用
  • 番茄畅听音乐版自动化任务实现教程
  • java基础-12 : 单列集合(Collection)
  • 查看邮箱注册过的网站百度资源搜索引擎
  • 网站建设常用编程语言square wordpress
  • 动规:01背包
  • 返利APP的“订单追踪”技术难点:如何通过埋点+消息队列(RocketMQ)实时同步淘宝/京东订单状态?
  • Net开发工具最新Rider 2025使用
  • 基于华为openEuler部署Dillinger个人文本编辑器
  • wordpress 标签固定链接宁波seo网络推广外包报价
  • 网站建设数据库是什么百度一下京东
  • 【Leetcode hot 100】131.分割回文串