linux – 使用top命令捕获由COMMAND过滤的进程的%CPU和PID
我需要编写一个执行以下操作的
Bash脚本:
>在“top”命令中,我想通过给定的COMMAND过滤进程.在下文中,我使用Google Chrome作为示例,在COMMAND列中显示为“chrome”. 示例:假设有三个“chrome”进程,“logfile”中的输出应如下所示(前三秒): 17:49:12 7954 14.0 17:49:12 7969 9.3 17:49:12 2626 1.3 17:49:13 7954 12.0 17:49:13 7969 6.3 17:49:13 2626 1.2 17:49:14 7954 14.7 17:49:14 7969 8.5 17:49:14 2626 2.1 到目前为止我的想法:使用命令 top -b -n 1 -p 7954 | tail -n 2 | head -n 2 | awk '{print $1,$9}' >> logfile 我通过PID过滤顶部(在这种情况下PID == 7954),输出看起来像 PID %CPU 7954 6.6 然而(因为我实际上想要通过COMMAND文件管理器)我不知道如何通过COMMAND过滤.在上面的行中,“-p 7954”对PID == 7954进行过滤,但是我需要在此处写什么来过滤COMMAND == chrome?另外,如何删除/避免标题? 根据时间步骤:我发现了命令 date +"%T" 给我时间格式正确(hh:mm:ss). 所以我只是努力将这些部分放在一起并修复上面提到的过滤问题.感谢您的任何帮助! 解决方法
Awk可以做到这一点; awk’/ regex / {print}’仅在匹配正则表达式的行上执行打印操作.
但是,你也可以(也许也应该)包含头部和尾部: top -b -n 1 | awk 'NR>1 && $10 == "chrome" {print strftime("%T"),$1,$9}' …假设顶部输出的第十个字段包含命令名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |