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

linux查看进程的状态

进程 状态 bash 僵尸 854    来源:    2025-04-05

在Linux系统中,查看进程状态可以通过多种命令实现,以下是常用的方法和详细说明:


1. ps 命令(最常用)

ps aux | grep <进程名或关键字>
  • 参数说明
    • a:显示所有用户的进程。
    • u:显示进程的详细状态(如CPU、内存占用)。
    • x:包括不关联终端的进程(如后台服务)。
  • 输出字段
    • STAT列即为进程状态(见下文状态码解释)。
  • 示例bash ps aux | grep nginx # 查看Nginx相关进程

2. 查看特定进程的详细状态

cat /proc/<PID>/status
  • 示例bash cat /proc/1234/status # 查看PID为1234的进程状态
  • 关键字段
    • State:进程状态(如 R (running)S (sleeping))。

3. top / htop 命令(实时动态查看)

top   # 实时进程监控(按q退出)
htop  # 增强版top(需安装:`sudo apt install htop`)
  • 输出说明
    • S列显示进程状态。
    • Shift + M 按内存排序,Shift + P 按CPU排序。

4. pstree(显示进程树)

pstree -p  # 显示进程及其子进程的树状结构

进程状态码(STAT列)解释

状态码 含义
R Running(运行中或可运行)
S Sleeping(可中断的睡眠,等待事件完成)
D Uninterruptible Sleep(不可中断的睡眠,通常等待I/O)
Z Zombie(僵尸进程,已终止但未被父进程回收)
T Stopped(进程被信号暂停,如Ctrl+Z
t Tracing stop(进程被调试器暂停)
< 高优先级进程
N 低优先级进程
s 会话首进程(Session leader)
l 多线程进程
+ 前台进程组

5. 检查僵尸进程

ps aux | grep 'Z'  # 筛选僵尸进程
  • 处理僵尸进程
    1. 找到其父进程ID(PPID),终止父进程: bash kill -9 <PPID>

6. 其他工具

  • systemctl(系统服务进程)bash systemctl status <服务名> # 如 systemctl status nginx
  • pgrepbash pgrep -l <进程名> # 快速查找进程PID和名称

总结场景

  • 快速查看进程是否存在ps aux | grep <关键字>
  • 分析资源占用tophtop
  • 检查进程细节cat /proc/<PID>/status
  • 排查僵尸进程ps aux | grep 'Z'

根据需求选择合适的命令即可!