在BASH中对数组进行UPTIME排序

时间:2013-10-05 20:51:16

标签: bash sorting uptime

我有一个简单的脚本来计算/获取xen上每个VM的每个正常运行时间(使用:xm正常运行时间)

xm uptime |grep vm |awk '{print $1}' > /uptime.txt
IPS="/uptime.txt"
VMDB=$(grep -Ev "^#" $IPS)
for i in $VMDB
do
        days=$(xm uptime |grep $i |awk '{print $3}')
        hrs=$(xm uptime |grep $i |awk '{print $5}' | sed 's/[:,]/ /g' | awk '{print $1}')
        mins=$(xm uptime |grep $i |awk '{print $5}' | sed 's/[:,]/ /g' | awk '{print $2}')
        uptimesecs=$(($mins*60))
        uptimesecs=$(($hrs*3600+$uptimesecs))
        uptimesecs=$(($days*86400+$uptimesecs))
        echo "$uptimesecs seconds uptime for $i"
done

但问题是:

  1. 如何对数组中的数据进行排序
  2. 我怎么知道vm的正常运行时间或多或少
  3. 有时VM的正常运行时间仅包括几小时:分钟:秒(通常显示天数小时:分钟:秒,因此上面的脚本给遇到的人带来了错误)>> * 60:语法错误:预期的操作数(错误标记为“* 60”)
  4. 我怎么知道谁刚重启(0:0:0或0:0:5)
  5. 由于

1 个答案:

答案 0 :(得分:0)

您可以将输出(例如逗号分隔)传递给'sort'命令。