在Linux上将单个pid CPU放入变量中

在Linux上将单个pid CPU放入变量中,linux,cpu,pid,Linux,Cpu,Pid,我需要将特定pid的CPU值放入一个变量中,以检测其值 我能够通过使用pidof获得程序的pid,并且我能够通过以下方式获得CPU值: ps -p <pid> -o %cpu 但是我不想让%CPU部分,仅仅是值,然后放入一个变量,然后质疑它是否高于90% 你能帮忙吗 谢谢。使用tail打印最后一行 ps -p <pid> -o %cpu | tail -n 1 使用tail打印最后一行 ps -p <pid> -o %cpu | tail -n 1 使用

我需要将特定pid的CPU值放入一个变量中,以检测其值

我能够通过使用
pidof
获得程序的
pid
,并且我能够通过以下方式获得CPU值:

ps -p <pid> -o %cpu
但是我不想让
%CPU
部分,仅仅是值,然后放入一个变量,然后质疑它是否高于90%

你能帮忙吗


谢谢。

使用tail打印最后一行

ps -p <pid> -o %cpu | tail -n 1

使用tail打印最后一行

ps -p <pid> -o %cpu | tail -n 1

使用带有空
名称的
ps
'
-o field=name
语法重命名标题:

cpu_percent=$(ps -p "$yourpid" -o %cpu=)
为了测试它是否大于某个值,我们可以去掉小数(bash无法处理它们)并比较:

yourpid=$$  # Example using current shell's pid

cpu_percent=$(ps -p "$yourpid" -o %cpu=)
echo "Fractional percent is $cpu_percent"

cpu_percent=${cpu_percent%%.*}
echo "Integer percent is $cpu_percent"

if [ "$cpu_percent" -ge 40 ]
then
  echo "It's more than 40"
fi

使用带有空
名称的
ps
'
-o field=name
语法重命名标题:

cpu_percent=$(ps -p "$yourpid" -o %cpu=)
为了测试它是否大于某个值,我们可以去掉小数(bash无法处理它们)并比较:

yourpid=$$  # Example using current shell's pid

cpu_percent=$(ps -p "$yourpid" -o %cpu=)
echo "Fractional percent is $cpu_percent"

cpu_percent=${cpu_percent%%.*}
echo "Integer percent is $cpu_percent"

if [ "$cpu_percent" -ge 40 ]
then
  echo "It's more than 40"
fi

要使ps不打印标题材料(%CPU,在您的情况下):

ps h-p-o%cpu
h选项关闭标题

man ps
了解更多信息


这样,您就不必像上面那样使用
tail-n1

让ps不打印标题材料(%CPU,在您的情况下):

ps h-p-o%cpu
h选项关闭标题

man ps
了解更多信息



这样,你就不必像上面那样使用
tail-n1

Hi,谢谢马克,但是那一行给了我一个空行:ps-p-o%cpu | awk'{print$2}'给我一个空行ps-p-o%cpu | awk'{print$1}给我上面有%cpu的原始值你知道为什么吗?嗨,马克,我想你被原始问题版本的格式错误搞糊涂了。ps输出实际上由两行组成。@JonasWielicki:indeed!谢谢-我运行OSX,格式不同,OP的格式有误导性!现在我已经启动了一个Ubuntu虚拟机,我看到另一个解决方案更加优雅,并相应地对它进行了升级!谢谢马克,快到了,要把它变成一个整数,因为它可以报告一个十进制数?嗨,谢谢马克,但那一行给了我一个空行:ps-p-o%cpu | awk'{print$2}'给我一个空行ps-p-o%cpu | awk'{print$1}给我原始值,上面有%cpu知道为什么吗?嗨,马克,我想你被原始问题版本的格式错误搞糊涂了。ps输出实际上由两行组成。@JonasWielicki:indeed!谢谢-我运行OSX,格式不同,OP的格式有误导性!现在我已经启动了一个Ubuntu虚拟机,我看到另一个解决方案更加优雅,并相应地对它进行了升级!谢谢马克,快到了,把它变成一个整数,因为它可以报告一个小数点?谢谢。我有这段代码,但不管cpu_%的值是多少,它都会报告相同的代码/bin/bash cpu_百分比=$(ps-p3850-o%cpu=)如果[cpu_百分比>40],则回显$cpu_百分比;然后回显“做点什么”或者回显“不要做点什么”fi@omega1该检查存在许多基本问题(shellcheck指出了几个)。我已经添加了一个例子来说明如何做。太好了,谢谢!这是可行的,尽管我发现(ps-p“$yourpid”-o%cpu=)似乎不能反映我在TOP中看到的cpu使用情况,但这有什么原因吗?再次感谢您的帮助。@omega1%CPU in
top
显示最后一秒的CPU使用情况。
ps
中的CPU%显示进程生命周期内的CPU使用率。哦,不!我需要它在实时。。。不想让你诅咒我,有没有办法从
top
而不是
ps
获得相同的值?再次感谢!非常感谢。我有这段代码,但不管cpu_%的值是多少,它都会报告相同的代码/bin/bash cpu_百分比=$(ps-p3850-o%cpu=)如果[cpu_百分比>40],则回显$cpu_百分比;然后回显“做点什么”或者回显“不要做点什么”fi@omega1该检查存在许多基本问题(shellcheck指出了几个)。我已经添加了一个例子来说明如何做。太好了,谢谢!这是可行的,尽管我发现(ps-p“$yourpid”-o%cpu=)似乎不能反映我在TOP中看到的cpu使用情况,但这有什么原因吗?再次感谢您的帮助。@omega1%CPU in
top
显示最后一秒的CPU使用情况。
ps
中的CPU%显示进程生命周期内的CPU使用率。哦,不!我需要它在实时。。。不想让你诅咒我,有没有办法从
top
而不是
ps
获得相同的值?再次感谢!
ps h -p <pid> -o %cpu