ps 是否只能显示父进程?

ps 是否只能显示父进程?

我正在解析输出ps,我不需要父进程的所有子进程

/usr/bin/postgres -D /var/lib/pgsql/data -p 1488
 \_ postgres: logger process
 \_ postgres: checkpointer process
 \_ postgres: writer process
 \_ postgres: wal writer process
 \_ postgres: autovacuum launcher process
 \_ postgres: stats collector process

有没有办法只显示

/usr/bin/postgres -D /var/lib/pgsql/data -p 1488

ps除了仪器之外,还有其他方法可以列出所有正在运行的父进程吗?

答案1

要使用该命令仅列出父进程而不列出子进程ps,可以使用该--ppid选项和-o标志来格式化输出:

ps --ppid 2 -o pid,cmd

此命令将仅列出父进程 ID (PPID) 为 2 的父进程,这通常是 init 进程的 PID。-o pid,cmd 选项指定仅显示 PID 和命令列。另一种方法是使用 pgrep 和 -P 选项根据父 PID 列出进程:

pgrep -P 2

此命令将列出父 PID 为 2 的进程的 PID。如果要从输出中排除 ps 命令本身,可以添加 grep -v 将其过滤掉:

ps --ppid 2 -o pid,cmd | grep -v "ps --ppid"

有很多方法可以做到,但这些是最简单的。

相关内容