我想通过进程名称/路径获取当前进程 CPU/内存使用率并将其打印到控制台。该命令应该输出一个数字,而不是提供持续的数据流,如ps
.
ps -p PID
不起作用:
- 我没有进程号(我有进程路径)
- 它不会将当前测量值打印到控制台一次
因此,例如,它应该看起来像这样:
$command -getCPU | grep processPath
答案1
我认为您需要的是awk
,您可以使用以下命令来显示进程名称的处理器和内存使用情况。
ps -C "PROCEES_NAME" -o %cpu,%mem,cmd
结果:
%CPU %MEM CMD
0.0 0.2 /usr/bin/python3 completion.py
0.0 0.1 /usr/bin/python3 lib/python/jedi/evaluate/compiled/subprocess/__main__.py lib/python
然后你可以使用 awk 删除第一行:
ps -C python3 -o %cpu,%mem,cmd | awk 'FNR > 1'
结果:
0.0 0.2 /usr/bin/python3 completion.py
0.0 0.1 /usr/bin/python3 lib/python/jedi/evaluate/compiled/subprocess/__main__.py lib/python
如果您只想获取使用次数并跳过其他输出,您可以使用以下命令:
ps -C "python3" -o %cpu,%mem,cmd | awk 'FNR > 1 {print $1,$2}'
结果:
0.0 0.2
0.0 0.1
$1
是第一行,$2
是第二行,如果需要,您可以将其删除。
请记住,使用 process_name 是一个坏主意,使用 PID 更好。
答案2
好吧,我对 top 和 ps 感到困惑。我能够使用以下命令获得我想要的东西:
$ps aux | grep <processName> | awk '{print $3}'
第 3 行是当前 CPU 百分比。