0

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

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. 我如何知道最多或更少的虚拟机正常运行时间
  3. 有时虚拟机的正常运行时间仅包含小时:分钟:秒(通常它显示天小时:分钟:秒,因此上面的脚本对遇到的错误给出了错误)>> *60:语法错误:预期操作数(错误标记是“* 60")
  4. 我怎么知道谁刚刚重新启动(0:0:0 或 0:0:5)

谢谢

4

1 回答 1

0

您可以将输出(例如以逗号分隔)传递给“排序”命令。

于 2013-10-05T21:26:47.697 回答