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

深入理解Linux进程管理:从基础到高级操作指南

1. 进程的定义、组成和环境
什么是进程?

想象你的电脑是一个大工厂,进程就是工厂里正在运行的机器。每个机器(进程)都有自己的任务,比如一台机器负责打印文件,另一台负责播放音乐。

  • 进程的组成

    • 代码:机器的操作说明书(程序的代码)。

    • 数据:机器当前使用的原材料(程序运行时需要处理的数据)。

    • 运行状态:机器是否在运行、暂停或故障(如 CPU 寄存器、内存地址)。

  • 进程环境
    每台机器需要特定的环境才能工作,比如电力、温度。进程的环境包括:

    • 环境变量:全局配置参数(如 PATH 指定去哪里找工具)。

    • 文件描述符:机器与外界的连接管道(如打开的文件、网络连接)。


2. 如何理解 systemd 进程?
  • systemd 是 Linux 系统的“工厂总控中心”。

    • 作用:它是系统的第一个进程(PID=1),负责启动和管理所有其他进程(服务)。

    • 类比:工厂的调度员,决定哪些机器先启动、如何重启故障机器。

  • 常见操作

    systemctl start nginx    # 启动 Nginx 服务(启动一台新机器)  
    systemctl stop nginx     # 关闭 Nginx 服务  
    systemctl enable nginx   # 开机自动启动 Nginx  

3. ps 和 top 有什么区别?
  • ps:给工厂拍一张“静态照片”,显示当前所有机器的状态快照。

    • 特点:一次性输出,适合查看特定时刻的进程信息。

  • top:实时监控工厂的“实时视频”,动态显示进程状态(如 CPU、内存占用)。

    • 特点:持续更新,适合观察资源使用情况。

通俗总结

  • ps 是“查档案”,top 是“看直播”。


4. ps aux 和 ps -ef 的作用
  • ps aux

    • 参数含义

      • a:显示所有用户的进程。

      • u:显示详细信息(如 CPU、内存占用)。

      • x:包括没有控制终端的进程(如后台服务)。

    • 输出示例

      USER   PID %CPU %MEM VSZ   RSS TTY  STAT START TIME COMMAND  
      root   1   0.0  0.1 12345 678 ?    Ss   10:00 0:01 /sbin/init  
  • ps -ef

    • 参数含义

      • -e:显示所有进程。

      • -f:显示完整格式(如父进程 PID)。

    • 输出示例

      UID   PID PPID C STIME TTY    TIME CMD  
      root   1    0 0 10:00 ?     00:00:01 /sbin/init  

核心区别

  • ps aux 侧重资源占用,ps -ef 侧重进程关系(如父子进程)。


5. 进程状态有哪些?

在 ps 或 top 的 STAT 列中,进程状态用单个字母表示:

  • R(Running):正在运行或等待 CPU(绿灯行)。

  • S(Sleeping):睡眠中,等待事件唤醒(如等待输入)。

  • D(Uninterruptible Sleep):深度睡眠,不可被唤醒(如等待磁盘 I/O)。

  • T(Stopped):被信号暂停(如按 Ctrl+Z)。

  • Z(Zombie):僵尸进程,已结束但未被父进程回收(工厂垃圾未清理)。

通俗理解

  • 进程像交通信号灯,不同状态决定它是否能继续运行。


6. 作业和作业控制
  • 作业(Job):用户启动的一个或多个关联进程(如一条命令 sleep 100 & 就是一个作业)。

  • 作业控制:管理前台和后台任务。

常用操作

  • &:后台运行作业(机器在后台默默工作)。

    sleep 100 &  # 后台运行 sleep  
  • Ctrl+Z:暂停当前作业(把机器临时关机)。

  • jobs:查看当前所有作业。

  • fg %1:将作业 1 调到前台(重新启动机器)。

  • bg %1:让作业 1 在后台继续运行。


7. kill 命令中信号 9 和 15 的区别
  • SIGTERM(15):礼貌地请求进程终止(默认信号)。

    • 作用:进程可以“收拾行李”再退出(如保存文件、关闭连接)。

    • 命令kill -15 PID

  • SIGKILL(9):强制终止进程(不给任何反应时间)。

    • 作用:直接拔电源,可能导致数据丢失。

    • 命令kill -9 PID

使用建议

  • 优先用 SIGTERM,若进程无响应再用 SIGKILL


8. TTY 终端是什么?
  • TTY(Teletype):早期的物理终端设备(像打字机),现代指虚拟终端或终端模拟器。

  • 查看进程的 TTY

    ps aux | grep nginx  
    • ? 表示没有关联终端(通常是后台服务)。

    • pts/0 表示伪终端(如 SSH 连接的终端)。


9. 显式发送信号的其他方式

除了 kill,还可以通过以下方式发送信号:

  • killall:通过进程名发送信号。

    killall -9 nginx  # 强制终止所有 nginx 进程 
  • pkill:通过模式匹配进程名。

    pkill -f "python script.py"  
  • 键盘快捷键

    • Ctrl+C:发送 SIGINT(终止前台进程)。

    • Ctrl+Z:发送 SIGTSTP(暂停前台进程)。

相关文章:

  • GPU算力哪家好?GpuGeek推出高性能GPU云服务
  • 泛型、泛型上限、泛型下限、泛型通配符
  • java虚拟机(JVM)以及各种参数详解
  • 力扣-哈希表-844 比较含退格的字符串
  • 理解C语言中的extern关键字
  • 【机器人-基础知识】欧拉角、旋转矩阵和四元数
  • python爬虫碰到IP被封的情况,如何解决?
  • 【Rust并发编程深度解析:内存模型与异步运行时实现原理】
  • JavaScript API与WebRTC技术解析:EasyRTC嵌入式视频通话SDK的实现
  • vue3:密码加密解密实现
  • pdf合并工具
  • OpenGL(4)着色器
  • LearnOpenGL-笔记-其三
  • 文件跨国传输如何加速?UDP改造机制解析
  • vscode出现:No module named ‘requests‘ 问题的解决方法
  • 【AI】单台10卡4090 openEuler服务器离线部署kasm workspace 提供简单的GPU云服务 虚拟化桌面
  • 每天一篇《目标检测》文献(一)
  • Android Compose remember 详解
  • docker jar镜像打包
  • windows平台的ffmpeg编译使用
  • 总书记考察的上海“模速空间”,要打造什么样的“全球最大”?
  • 发出“美利坚名存实亡”呼号的卡尼,将带领加拿大走向何方?
  • “不意外”和“不遗余力”,直击上海商超对接外贸企业
  • 新华社评论员:汇聚起工人阶级和广大劳动群众的磅礴力量
  • 中国贸促会:有近50%的外贸企业表示将减少对美业务
  • 原创话剧风向标!这个展演上《大宅门》《白鹿原》先后上演