我有一个简单的脚本来计算/抓取 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
但问题是:
- 如何对数组中的数据进行排序
- 我如何知道最多或更少的虚拟机正常运行时间
- 有时虚拟机的正常运行时间仅包含小时:分钟:秒(通常它显示天小时:分钟:秒,因此上面的脚本对遇到的错误给出了错误)>> *60:语法错误:预期操作数(错误标记是“* 60")
- 我怎么知道谁刚刚重新启动(0:0:0 或 0:0:5)
谢谢