插件窝 干货文章 Linux PS命令深度解析

Linux PS命令深度解析

进程 bash 显示 命令 94    来源:    2025-04-09

Linux PS命令深度解析

ps命令是Linux/Unix系统中用于查看进程状态的核心工具,全称为"Process Status"。它能够显示当前系统的进程信息,是系统管理和故障排查的重要工具。

基本用法

ps [options]

常用选项组合

  1. 查看当前终端进程

    ps
    

    仅显示当前终端启动的进程

  2. 查看所有进程

    ps -e
    ps -A  # 同上,显示所有进程
    
  3. 完整格式输出

    ps -ef
    

    显示所有进程的完整信息,包括UID、PID、PPID等

  4. BSD风格输出

    ps aux
    

    这是最常用的组合之一,显示详细信息包括内存和CPU使用情况

输出字段详解

ps aux输出的典型列:

USER    PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
  • USER: 进程所有者
  • PID: 进程ID
  • %CPU: CPU使用百分比
  • %MEM: 内存使用百分比
  • VSZ: 虚拟内存大小(KB)
  • RSS: 常驻内存大小(KB)
  • TTY: 启动进程的终端
  • STAT: 进程状态
  • START: 进程启动时间
  • TIME: 累计CPU时间
  • COMMAND: 命令名/命令行

进程状态(STAT)代码

代码 含义
D 不可中断的休眠状态(通常是在等待I/O)
R 运行中或可运行(在运行队列中)
S 休眠中(可被中断)
T 已停止(通常由作业控制信号或进程被跟踪)
Z 僵尸进程(已终止但未被父进程回收)
< 高优先级进程
N 低优先级进程
L 有页面被锁定在内存中
s 会话首进程
l 多线程进程
+ 位于前台进程组

高级用法

1. 自定义输出格式

ps -eo pid,user,cmd,%cpu,%mem --sort=-%cpu | head

显示特定字段并按CPU使用率降序排列

2. 查看特定用户的进程

ps -u username

3. 查看进程树

ps -ejH
ps axjf  # 显示进程树

4. 查看线程信息

ps -eLf
ps -T -p <PID>  # 查看特定进程的线程

5. 实时监控进程

结合watch命令实现实时监控:

watch -n 1 'ps -eo pid,user,cmd,%cpu,%mem --sort=-%cpu | head'

6. 查看进程环境变量

ps e -p <PID>

实用示例

  1. 查找特定进程

    ps aux | grep nginx
    
  2. 显示完整命令行

    ps -ww -e  # -ww确保不截断命令行
    
  3. 查看进程打开的文件

    ps -p <PID> -o pid,cmd,files
    
  4. 显示进程的安全上下文(SELinux)

    ps -eZ
    
  5. 显示进程的调度策略

    ps -eo pid,cmd,cls  # cls字段显示调度策略
    

注意事项

  1. ps命令的输出是执行瞬间的系统状态快照,不是实时数据
  2. 不同Linux发行版的ps命令可能有细微差异
  3. 对于持续监控,tophtop可能更合适
  4. 在容器环境中,ps通常只显示容器内的进程

替代工具

  • top/htop: 实时进程监控
  • pgrep/pkill: 基于名称查找/终止进程
  • pidof: 查找运行中进程的PID

掌握ps命令的各种用法能够大大提高Linux系统管理和故障排查的效率,是每位系统管理员和开发者的必备技能。