从正常运行时间中获取平均负载

时间:2014-07-19 11:07:09

标签: bash command-line awk grep

我想要做的是获取命令正常运行时间,并获得平均负载

$ uptime
07:01:30 up 20:29,  2 users,  load average: 0.32, 0.39, 0.54

我觉得这是我可以用awk做的事情,但我不太确定如何。 请帮助。

7 个答案:

答案 0 :(得分:5)

您可以使用带有反向引用的正则表达式:即查找任何字符序列(。*),但仅限于 average之后的某个点:

uptime  | grep -oP '(?<=average:).*'

答案 1 :(得分:3)

您可以使用grep

uptime  | grep -o 'load.*'

您还可以通过

分别提取三个平均负载字段
uptime  | grep -o '[0-9]\+\.[0-9]\+*'

答案 2 :(得分:2)

假设uptime始终以上述格式输出数据,您可以在:切换并保留第五组:

$ uptime | cut -d : -f 5
 0,24, 0,23, 0,23

答案 3 :(得分:2)

找到解决方案here

uptime | awk -F'[a-z]:' '{ print $2}'

答案 4 :(得分:2)

你可以用Bash做到这一点。

up=($(uptime))
load_avg=${up[@]: -3}

或者,如果您正在阅读/proc/loadavg

read -a load < /proc/loadavg
load_avg=${load[@]:0:3}

答案 5 :(得分:2)

$ uptime | awk -F': ' '{print $2}'
0.32, 0.39, 0.54

$ uptime | sed 's/.*: //'
0.32, 0.39, 0.54

答案 6 :(得分:0)

假设uptime将最后一次显示平均负载,则只能保留最后17个字符:

uptime | tail -c 17