我有一个简单的bash脚本,它使用正常运行时间和awk获得平均负载,例如
LOAD_5M=$(uptime | awk -F'load averages:' '{ print $2}' | awk '{print $2}')
然而,这包括在负载平均值
末尾的','e.g。
0.51,
所以我已经用字符串替换替换逗号,如下所示:
LOAD_5M=${LOAD_5M/,/}
我不是一个awk或bash wizzkid所以虽然这给了我想要的结果,但我想知道是否有一种简洁的方式来写这个,或者通过:
答案 0 :(得分:2)
您可以在同一个awk命令中执行此操作:
uptime | awk -F 'load averages?: *' '{split($2, a, ",? "); print a[2]}'
1.32
答案 1 :(得分:1)
/proc/loadavg
中有5分钟的加载时间。您只需使用cut
:
cut -d' ' -f2 /proc/loadavg
使用awk
,您可以发出:
awk '{print $2}' /proc/loadavg
如果您不使用Linux,则文件/proc/loadavg
将不存在。在这种情况下,我建议使用sed
,如下所示:
uptime | sed 's/.*, \(.*\),.*,.*/\1/'
答案 2 :(得分:0)
uptime | awk -F'load average:' '{ print $2}' | awk -F, '{print $2}'
0.38
(我的正常运行时间输出有'加载平均值:'单数)
答案 3 :(得分:0)
负载平均数始终是“正常运行时间”中的最后3个字段。输出如此:
IFS=' ,' read -a uptime_fields <<<"$(uptime)"
LOAD_5M=${uptime_fields[@]: -2:1}