AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 948947
Accepted
SimplySimplified
SimplySimplified
Asked: 2017-08-24 00:42:43 +0800 CST2017-08-24 00:42:43 +0800 CST 2017-08-24 00:42:43 +0800 CST

简化顶部命令

  • 772

我正在使用以下命令来收集子 PID 的信息:

top -b -n1 -p 719011,719012,719013,719014,719015,719016,719017 | sed -e 's/USER/----/' -e 's/root/----/' -e 's/PR/--/' -e 's/20/--/' -e 's/VIRT/----/' -e 's/538m/----/' -e 's/RES/---/' -e 's/12m/---/' -e 's/SHR/---/' -e 's/1348/----/' -e 's/NI/--/' -e 's/S/-/' | tail -9 > file1

它工作得很好,但有点啰嗦!我想知道是否有办法仅通过使用 pPID 来收集信息?从而省去了键入每个子进程 ID 的麻烦。我不希望完整的答案只是指向正确方向的指针,所以我可以自己弄清楚!

好的,所以我已将命令整理为:

ps -o pid= --ppid 719008 | top -b -n4 | awk '{print $1,$9,$10,$12}' | tail -9 > file

但是,我没有为子进程提供输出,而是为系统上的每个进程提供输出!我错过了什么?

$ pstree -p 719008
dvaudio_server(719008)─┬─{dvaudio_server}(719011)
                       ├─{dvaudio_server}(719012)
                       ├─{dvaudio_server}(719013)
                       ├─{dvaudio_server}(719014)
                       ├─{dvaudio_server}(719015)
                       ├─{dvaudio_server}(719016)
                       └─{dvaudio_server}(719017)

的输出pgrep是:

pgrep: option requires an argument -- 'd'
Usage: pgrep [-flvx] [-d DELIM] [-n|-o] [-P PPIDLIST] [-g PGRPLIST] [-s SIDLIST]
    [-u EUIDLIST] [-U UIDLIST] [-G GIDLIST] [-t TERMLIST] [PATTERN]
command-line
  • 2 2 个回答
  • 274 Views

2 个回答

  • Voted
  1. Best Answer
    muru
    2017-08-24T00:48:35+08:002017-08-24T00:48:35+08:00

    您可以使用以下方法获取进程的直接子代pgrep:

    -P, --parent ppid,...
          Only match processes whose parent process ID is listed.
    

    和:

    -d, --delimiter delimiter
          Sets  the  string  used to delimit each process ID in the output
          (by default a newline).  (pgrep only.)
    

    所以:

    top ... -p $(pgrep -P <PPID> -d,) | ...
    
    • 2
  2. Byte Commander
    2017-08-24T00:51:34+08:002017-08-24T00:51:34+08:00

    您可以使用ps来显示进程列表。它理解--ppid PPIDLIST允许您通过以逗号分隔的父进程 ID 列表过滤进程的参数。

    来自man ps:

    --ppid pidlist
    
    Select by parent process ID. This selects the processes with a parent process ID in pidlist. 
    That is, it selects processes that are children of those listed in pidlist. 
    

    所以也许你应该尝试类似的东西

    ps aux --ppid 12345
    
    • 2

相关问题

  • 如何从命令行仅安装安全更新?关于如何管理更新的一些提示

  • 如何从命令行刻录双层 dvd iso

  • 如何从命令行判断机器是否需要重新启动?

  • 文件权限如何工作?文件权限用户和组

  • 如何在 Vim 中启用全彩支持?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve