Skip to content

第11章:进程管理

11.1 什么是进程?查看进程

进程的概念

  • 进程:正在运行的程序实例
  • PID:进程ID,每个进程的唯一标识符
  • 父进程:创建其他进程的进程
  • 子进程:由其他进程创建的进程

ps命令

  • 功能:查看当前系统的进程状态
  • 常用选项:
    • -e:显示所有进程
    • -f:显示完整格式的进程信息
    • -l:显示详细格式的进程信息
    • -aux:显示所有用户的所有进程,包含CPU和内存使用情况
  • 示例:
    bash
    $ ps  # 查看当前终端的进程
    $ ps -ef  # 查看所有进程的完整信息
    $ ps aux  # 查看所有进程的详细信息

top命令

  • 功能:实时显示进程状态和系统资源使用情况
  • 常用选项:
    • -d:指定刷新间隔
    • -p:查看指定PID的进程
  • 操作:
    • q 退出
    • k 终止进程
    • s 更改刷新间隔
    • P 按CPU使用率排序
    • M 按内存使用率排序
  • 示例:
    bash
    $ top  # 实时查看进程
    $ top -d 2  # 每2秒刷新一次

htop命令

  • 功能:top的增强版,提供更友好的界面
  • 操作:
    • F1 查看帮助
    • F9 终止进程
    • q 退出
  • 示例:
    bash
    $ htop  # 启动htop

11.2 终止进程

kill命令

  • 功能:向进程发送信号
  • 常用信号:
    • 1 (SIGHUP):重新加载配置
    • 9 (SIGKILL):强制终止进程
    • 15 (SIGTERM):正常终止进程(默认)
  • 格式:kill [信号] PID
  • 示例:
    bash
    $ kill 1234  # 发送SIGTERM信号
    $ kill -9 1234  # 强制终止进程
    $ kill -1 1234  # 重新加载配置

pkill命令

  • 功能:根据进程名终止进程
  • 格式:pkill [选项] 进程名
  • 示例:
    bash
    $ pkill firefox  # 终止所有firefox进程
    $ pkill -9 firefox  # 强制终止所有firefox进程

killall命令

  • 功能:根据进程名终止进程(与pkill类似)
  • 示例:
    bash
    $ killall firefox  # 终止所有firefox进程

11.3 进程后台运行

& 符号

  • 功能:将命令放入后台运行
  • 格式:命令 &
  • 示例:
    bash
    $ firefox &  # 在后台运行firefox

nohup命令

  • 功能:使进程在后台运行,即使终端关闭也能继续运行
  • 格式:nohup 命令 &
  • 示例:
    bash
    $ nohup ./script.sh &  # 后台运行脚本,输出重定向到nohup.out

jobs命令

  • 功能:查看当前终端的后台进程
  • 示例:
    bash
    $ jobs  # 查看后台进程

fg命令

  • 功能:将后台进程调回前台
  • 格式:fg [job编号]
  • 示例:
    bash
    $ fg 1  # 将编号为1的后台进程调回前台

bg命令

  • 功能:将前台进程放入后台
  • 格式:bg [job编号]
  • 示例:
    bash
    $ bg 1  # 将编号为1的进程放入后台

11.4 查看进程资源占用

top命令

  • 功能:实时查看进程的CPU和内存使用情况
  • 示例:
    bash
    $ top  # 实时查看资源占用

ps命令

  • 功能:查看进程的资源占用情况
  • 示例:
    bash
    $ ps aux --sort=-%cpu  # 按CPU使用率排序
    $ ps aux --sort=-%mem  # 按内存使用率排序

pidstat命令

  • 功能:查看进程的详细资源使用情况
  • 示例:
    bash
    $ pidstat 1  # 每1秒显示一次进程资源使用情况

11.5 实战:终止异常进程、后台运行程序

终止异常进程

  1. 查看占用CPU或内存过高的进程:

    bash
    $ top
  2. 找到异常进程的PID

  3. 终止进程:

    bash
    $ kill -9 PID
  4. 验证进程是否已终止:

    bash
    $ ps aux | grep PID

后台运行程序

  1. 后台运行长时间执行的命令:

    bash
    $ nohup wget https://example.com/large-file.zip &
  2. 查看后台进程:

    bash
    $ jobs
  3. 查看后台进程的输出:

    bash
    $ tail -f nohup.out
  4. 将后台进程调回前台:

    bash
    $ fg
  5. 再次将进程放入后台:

    bash
    $ Ctrl + Z  # 暂停进程
    $ bg  # 将进程放入后台

实战练习:进程管理

  1. 查看当前系统的进程:

    bash
    $ ps aux
  2. 实时查看进程状态:

    bash
    $ top
  3. 后台运行一个命令:

    bash
    $ sleep 300 &
  4. 查看后台进程:

    bash
    $ jobs
  5. 终止后台进程:

    bash
    $ kill %1  # 终止第一个后台进程
  6. 查看进程树:

    bash
    $ pstree
  7. 后台运行一个脚本并使其在终端关闭后继续运行:

    bash
    $ nohup bash -c 'for i in {1..10}; do echo $i; sleep 1; done' &
  8. 查看nohup输出:

    bash
    $ cat nohup.out

通过学习进程管理,你将能够监控和控制系统中的进程,确保系统资源的合理使用,及时终止异常进程,保证系统的稳定运行。

© 2026 编程马·菜鸟教程 版权所有