插件窝 干货文章 linux 查看进程运行状态

linux 查看进程运行状态

进程 状态 bash 内存 1000    来源:    2025-04-05

在 Linux 系统中,查看进程运行状态有多种命令和方式。以下是常用的方法及说明:


1. ps 命令(最基础)

ps aux | grep <进程名/关键字>
  • 参数说明
    • a:显示所有用户的进程。
    • u:显示进程的详细状态(CPU、内存等)。
    • x:包括未关联终端的进程(如后台服务)。
  • 输出关键列
    • STAT:进程状态(见下文解释)。
    • %CPU%MEM:CPU 和内存占用率。
  • 示例bash ps aux | grep nginx

进程状态(STAT)解释

状态码 含义
R 运行中(Running)或可运行(在运行队列中等待CPU)
S 可中断的睡眠状态(等待事件完成,如I/O操作)
D 不可中断的睡眠(通常与硬件I/O相关,不能被信号唤醒)
T 暂停状态(如通过 Ctrl+ZSIGSTOP 信号)
Z 僵尸进程(已终止但未被父进程回收)
< 高优先级进程
N 低优先级进程
s 会话领导者(主进程)
l 多线程进程
+ 前台进程组

2. top / htop(实时监控)

top(系统自带)

top
  • 交互操作
    • P:按CPU使用率排序。
    • M:按内存使用率排序。
    • q:退出。
  • 输出字段
    • PID:进程ID。
    • STAT:进程状态(同 ps)。
    • NI:进程优先级(Nice值)。

htop(需安装,更友好)

htop
  • 安装bash sudo apt install htop # Debian/Ubuntu sudo yum install htop # CentOS/RHEL
  • 优势
    • 彩色显示,支持鼠标操作。
    • 直接查看树形进程结构(按 F5)。

3. pstree(查看进程树)

pstree -p <进程ID>
  • 参数
    • -p:显示进程PID。
    • -u:显示用户名称。
  • 用途:查看进程的父子关系,适合分析多进程应用。

4. systemctl(管理系统服务)

systemctl status <服务名>
  • 示例bash systemctl status nginx
  • 输出内容
    • 服务是否活跃(Active)。
    • 主进程PID及状态。
    • 日志片段。

5. /proc 文件系统(底层信息)

cat /proc/<PID>/status
  • 示例bash cat /proc/1234/status | grep State
  • 用途:查看进程的详细状态、线程、内存映射等。

6. 其他工具

  • pgrep:快速查找进程PID。 bash pgrep -l nginx
  • pidof:直接获取进程PID。 bash pidof nginx

常见问题排查

  1. 僵尸进程

    • 使用 ps aux | grep 'Z' 查找僵尸进程。
    • 解决方法:终止其父进程(需谨慎)。
  2. 高CPU/内存占用

    • 通过 tophtop 定位异常进程。
    • 使用 straceperf 分析系统调用。
  3. 进程卡死

    • 检查状态是否为 D(不可中断睡眠),可能是I/O阻塞。

根据需求选择合适的工具: - 快速检查pspgrep。 - 实时监控top / htop。 - 分析依赖关系pstree。 - 服务管理systemctl