gpt4 book ai didi

linux - 将十进制数与其他数字进行比较的脚本

转载 作者:太空宇宙 更新时间:2023-11-04 12:19:55 25 4
gpt4 key购买 nike

尝试获取某些 PROD 服务器的 CPU 利用率,并在达到 SunOS 服务器上的特定值时收到警报。

尝试以下操作:

#!/usr/bin/sh
CPU=10
prstat -a 3 1 | awk '{print $1,$2,$9;}' | head -5 > top5.txt
cat top5.txt | awk '{print $3;}' | sed '1d' > re.txt
if [ `cat re.txt` -gt $CPU ];
then
echo "this is TEST"
fi

top5.txt 文件的内容:

cat test.txt
PID USERNAME CPU
20845 sql 2.5
25690 sql 0.3
986 splunk 0.2
5 root 0.1

re.txt 文件的内容:

cat re.txt
2.5
0.3
0.2
0.1

获取错误:

 " [: 0.3%: unknown operator"

前两个命令正在执行并给出预期结果,但在循环检查条件 (>10) 时,如果文件“re.txt”中的值是十进制数字,则无法进行比较。

请有人能告诉我们一种方法来比较从文件中读取的这些值。

感谢 ADV....

最佳答案

prstat -a 3 1|awk -v cpu=10 'NR<=5 && NR!=1 && $3 > cpu{print "This is Test..."}' 

这是一个 awk解决方案不完全是纯 bash,这里所有条件都存在。另外,请注意,为您的处理创建临时文件并不是一个很好的解决方案。(如 top5.txt ,re.txt )。

解释:

awk -v cpu=10 :这是为名为 cpu 的 awk 变量赋值.
NR<=5 : 这意味着前 5 行。
NR!=1 : 表示不是第一行。
NR<=5 && NR!=1 : 这个组合意味着,第 2 到 5 行。
$3>cpu :这意味着如果第三列更大,那么变量的值 cpu .

如果满足上述所有条件,则执行 {print "this is test"}

例子如下:

echo "$x"
PID USERNAME CPU
20845 sql 2.5
25690 sql 0.3
986 splunk 0.2
5 root 0.1
4 test 11

echo "$x" |awk -v cpu=10 'NR<=6 && NR!=1 && $3 > cpu{print "This is Test... " $0}'
This is Test... 4 test 11

关于linux - 将十进制数与其他数字进行比较的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46314223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com