ps -eo pid,user,comm 是 linux 中审计进程的基础命令,-e 显示所有进程,-o 自定义输出字段,user 和 comm 必须小写;常用组合包括按 etime 排序、筛选解释型语言进程、按用户排序对齐及导出 csv。

在 Linux 中,用 ps 命令按需输出进程的 PID、用户(User)、命令名(Comm)等字段,是审计和排查的基础操作。关键不是死记参数,而是理解 -eo 的含义和字段拼写规则。
理解 ps -eo 的含义
-e 表示显示所有进程(等价于 -A),-o 用于自定义输出格式,后面紧跟以逗号分隔的字段名。
你提到的 Ps-Efo-Pid,User,Comm 实际应为小写命令加正确选项:ps -eo pid,user,comm。
注意:ps 对大小写敏感,PID 和 pid 都可识别,但 User 必须写成 user(小写),Comm 应为 comm —— 这是常见拼错点。
常用审计字段及说明
除基础三字段外,审计常需补充上下文信息:
- pid:进程唯一标识符,用于后续 kill 或 strace
- user:启动该进程的有效用户名(非 UID),便于权限归属判断
-
comm:内核中记录的命令名(短名,无路径,如
sshd而非/usr/sbin/sshd) - args:完整命令行(含参数和路径),适合查可疑启动项,但可能过长
- etime:进程已运行的秒数(从启动至今),可用于识别长期驻留或异常新启进程
-
ppid:父进程 PID,配合
ps -eo ppid,pid,user,comm可追溯进程树
生成简洁、可读、可审计的列表
推荐组合(兼顾清晰与实用):
ps -eo pid,user,comm,etime --sort=-etime | head -20
说明:按运行时长倒序排列,取前 20 个最长命进程,快速发现“不该长期存在”的服务或残留任务。
ps -eo pid,user,comm,args | grep -E "(python|java|node|sh)" | grep -v "grep"
说明:筛选高风险解释型语言进程,排除自身 grep,适合安全巡检。
ps -eo pid,user,comm --no-headers | sort -k2,2 | column -t
说明:去掉表头,按用户名排序,再用 column -t 对齐,方便人工阅查权限分布。
导出为 CSV 供进一步分析
审计常需导入 Excel 或 SIEM 系统,可用以下方式生成带引号的 CSV:
ps -eo pid,user,comm,etime --no-headers | awk -F' ' '{print "\"" $1 "\",\"" $2 "\",\"" $3 "\",\"" $4 "\""}' > proc_audit.csv
说明:用 awk 拆分空格分隔字段并添加双引号,规避字段含空格导致解析错位问题(comm 本身不含空格,但扩展用 args 时就很重要)。











