You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于ps仅显示父进程的用法及替代工具的技术咨询

ps仅显示父进程的用法及替代工具的技术咨询

看起来你想过滤掉postgres的子进程,只保留它的主进程,同时还想了解除ps之外的可行工具,我给你整理几个实用的方法:

一、用ps命令直接筛选目标进程

方法1:通过父进程PID精准筛选

postgres的主进程通常是由系统init进程(PID=1)启动的,我们可以直接基于这个条件过滤:

ps -C postgres --ppid 1 -o cmd --no-headers

参数解释:

  • -C postgres:指定只匹配postgres相关进程
  • --ppid 1:限定父进程为PID=1的进程(也就是init)
  • -o cmd:只输出进程的命令行内容
  • --no-headers:去掉表头,直接得到你需要的那一行结果

方法2:通过进程启动顺序筛选

如果你的环境中postgres主进程的父进程不是1,也可以通过找最早启动的postgres进程(也就是主进程)来获取:

ps -p $(pgrep -o postgres) -o cmd --no-headers

这里pgrep -o postgres会返回postgres进程中启动最早的那个PID(也就是主进程),再用ps输出它的命令行即可。

二、除ps之外的替代工具

1. 使用pstree工具

pstree本身是用来展示进程树的,我们可以用它只提取postgres的主进程:

pstree -T -p $(pgrep -o postgres)

-T选项会让pstree只显示指定的进程本身,不展开它的子进程树,刚好符合你的需求。

2. 用pgrep配合xargs

pgrep可以直接筛选符合条件的进程PID,再结合xargsps输出命令行:

pgrep -P 1 postgres | xargs ps -o cmd --no-headers

这个逻辑和第一种ps方法类似,先找到父进程为1的postgres PID,再输出它的命令行。

备注:内容来源于stack exchange,提问作者palmasd1

火山引擎 最新活动