系统监控 / 命令文档

Linux ps 命令

$ ps 12 个章节 Linux 命令详解

概述

Process Status - 进程状态查看与管理的核心工具

命令定义与含义

ps (Process Status) 是Linux系统中用于显示当前运行进程状态的命令。它提供系统中活动进程的快照信息。

核心概念 进程:正在运行的程序实例 PID:进程标识符,系统唯一 PPID:父进程ID 状态:进程当前运行状态
ps [选项] # 基本语法

主要使用场景

系统监控

监控系统进程状态,识别异常进程和资源占用

故障排查

查找僵尸进程、高CPU占用进程,定位系统性能问题

进程管理

配合kill命令终止进程,进行进程生命周期管理

性能分析

分析进程资源使用情况,优化系统性能

常用选项详解

选项选项含义含义示例示例
-e-e显示所有进程显示所有进程ps -eps -e
-f-f完整格式显示完整格式显示ps -efps -ef
-u-u指定用户进程指定用户进程ps -u rootps -u root
auxauxBSD风格详细信息BSD风格详细信息ps auxps aux
-p-p指定进程ID指定进程IDps -p 1234ps -p 1234

基础查看命令

ps aux # 查看所有进程详细信息
ps -ef # 标准格式显示所有进程
ps -u username # 查看指定用户进程

进程过滤与搜索

ps aux | grep nginx # 查找nginx进程
ps -ef | grep -v grep | grep java # 精确查找java进程

资源监控命令

ps aux --sort=-%cpu | head -10 # CPU占用TOP10
ps aux --sort=-%mem | head -10 # 内存占用TOP10
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem # 自定义字段排序

故障排查命令

ps aux | awk '$8 ~ /^Z/ { print $2 }' # 查找僵尸进程
ps -eo stat,pid,cmd | grep ^D # 查找不可中断进程

进程树显示

ps auxf # 显示进程树结构
ps -ejH # 层次化显示进程关系

实时监控脚本

watch -n 1 'ps aux --sort=-%cpu | head -20' # 每秒刷新CPU排行

自定义输出格式

ps -eo pid,user,cmd,pcpu,pmem,time # 自定义显示字段
进阶技巧 使用 --forest 选项显示进程关系树 结合 awk 和 sed 进行复杂数据处理 利用 --no-headers 去除表头便于脚本处理 使用 -o 选项完全自定义输出格式

运维实战案例

案例1:服务器CPU飙升排查

ps aux --sort=-%cpu | head -5 # 找出CPU占用最高的5个进程
                        ps -p $PID -o pid,cmd,pcpu,pmem,time # 详细查看问题进程

案例2:内存泄漏检测

ps -eo pid,cmd,pmem --sort=-%mem | head -10 # 内存占用排行
                        ps -p $PID -o pid,vsz,rss,pmem,cmd # 查看进程内存详情

案例3:清理僵尸进程

ps aux | awk '$1 ~ /^Z/ { print "僵尸进程 PID:", $2, " 父进程 PPID:", $3 }' # 注意:僵尸进程无法被 kill(已死),处理父进程或重启其所属服务即可回收

案例4:服务进程监控脚本

#!/bin/bash
                        while true; do
                          if ! ps aux | grep -q "[n]ginx"; then
                            systemctl start nginx
                          fi
                          sleep 30
                        done

同分类 · 其他命令文档