Pra*_*dep 13 macos bash shell ps
我使用特定的ps命令
ps -p <pid> -o %cpu, %mem
Run Code Online (Sandbox Code Playgroud)
这给了我一个结果
%CPU %MEM
15.1 10.0
Run Code Online (Sandbox Code Playgroud)
我想要做的就是打印这些数字,如15.1和10.0,没有标题.我试图使用'cut'.但它似乎适用于每一条线.
即
echo "$(ps -p 747 -o %cpu,%mem)" | cut -c 1-5
Run Code Online (Sandbox Code Playgroud)
给出类似的东西
%CPU
8.0
Run Code Online (Sandbox Code Playgroud)
如何获得没有标题的数字?
aba*_*ert 26
相当于GNU的BSD(以及更普遍的POSIX)ps --no-headers
有点烦人,但是,从手册页:
Run Code Online (Sandbox Code Playgroud)-o Display information associated with the space or comma sepa- rated list of keywords specified. Multiple keywords may also be given in the form of more than one -o option. Keywords may be appended with an equals (`=') sign and a string. This causes the printed header to use the specified string instead of the standard header. If all keywords have empty header texts, no header line is written.
所以:
ps -p 747 -o '%cpu=,%mem='
Run Code Online (Sandbox Code Playgroud)
而已.
如果你确实需要从任意命令中删除第一行,那么tail就是这么简单:
ps -p 747 -o '%cpu,%mem' | tail +2
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要完全可移植:
ps -p 747 -o '%cpu,%mem' | tail -n +2
Run Code Online (Sandbox Code Playgroud)
的cut
命令是那种基于列的等效的更简单的基于行的命令的head
和tail
.(如果你确实想要剪切列,它可以工作......但在这种情况下,你可能不会;首先传递-o
你想要ps 的参数更简单,而不是通过额外的东西并尝试将它们剪掉.)
同时,我不确定为什么你认为你需要将某些东西作为回声的参数,当它与直接运行它具有相同的效果时,只会使事情变得更复杂.例如,以下两行是等效的:
echo "$(ps -p 747 -o %cpu,%mem)" | cut -c 1-5
ps -p 747 -o %cpu,%mem | cut -c 1-5
Run Code Online (Sandbox Code Playgroud)
小智 8
--no-headers print no header line at all
或使用:
ps | tail -n +2
Run Code Online (Sandbox Code Playgroud)
使用awk
:
ps -p 747 -o %cpu,%mem | awk 'NR>1'
Run Code Online (Sandbox Code Playgroud)
使用sed
:
ps -p 747 -o %cpu,%mem | sed 1d
Run Code Online (Sandbox Code Playgroud)