我试图使用 Linux top 命令监视进程的 CPU、RAM 和计算时间,以及它生成的所有子进程。
我发现我可以使用以下语法存储 top 命令的输出:
$ top -b > top.txt
然后我用 python 脚本解析结果。但我无法确定我正在监视的特定进程及其子进程。
我发现我可以通过在 top 运行时键入来在 top 中添加 PPID 字段f
,但这在使用该选项的批处理模式下不起作用-b
。
有没有办法显示 PPID 并存储 top 命令的输出,以便我在解析结果时可以找到我感兴趣的进程?
我的具体问题是在批处理模式下使用 top 时在输出文件中包含 PPID。如果您有更好的建议来监控进程的 CPU、RAM 和计算时间,也将受到欢迎。
答案1
在交互式顶部显示中添加 PPID(或任何其他字段)后,您只需使用W(大写w)。然后退出 ( q) 并使用top -b
,它将包含并显示您以交互方式对顶部所做的更改中的字段。
答案2
top
ps
被创建为显示流程的交互式和更新变体。在这里使用命令会更容易、更自然ps
。例如,对于父进程信息:
ps -ejf > top.txt
或者,对于您的用户,
ps -ejf | awk '{if ($1=="'${USER}'" || NR==1) {print $0}}' > top.txt
或者,以树的格式,可视化进程树的父级/子级:
ps auxfww > top.txt
PPID和简单树格式的组合:
ps -ejfH | awk '{if ($1=="'${USER}'" || NR==1) {print $0}}' > top.txt