参考链接:
top后台执行显示:top: failed tty get 错误
问题
在Shell脚本中以非交互式模式下调用top命令,经常会出现:
top: failed tty get
解决办法
加个 -b 选项即可
解释
执行 man top 查看top的mannual,-b 选项的描述如下:
-b :Batch-mode operation
Starts top in Batch mode, which could be useful for sending output from top to other programs or to a
file. In this mode, top will not accept input and runs until the iterations limit you've set with the
`-n' command-line option or until killed.
-n :Number-of-iterations limit as: -n number
Specifies the maximum number of iterations, or frames, top should produce before ending.
举例
执行 top -nb 1查看CPU使用率(系统:Ubuntu22.04 x86_64):
# top -nb 1 查看CPU使用率
freeCpuRate=`top -bn 1 | grep 'Cpu' | awk -F' ' '{print $8}' |awk -F'%' '{print $1}'`
echo "freeCpuRate: $freeCpuRate%"
cpuRate=`echo "100-$freeCpuRate" | bc`
echo "cpuRate: $cpuRate%"
输出:
freeCpuRate: 92.1%
cpuRate: 7.9%