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. VM のアップタイムの最大値または最小値を知るにはどうすればよいですか
  3. VM のアップタイムが時:分:秒のみで構成される場合があります (通常、日:時:分:秒で表示されるため、上記のスクリプトでは発生したエラーに対してエラーが発生します) >> *60: 構文エラー: オペランドが必要です (エラー トークンは "* 60")
  4. 誰が再起動したかを知る方法 (0:0:0 または 0:0:5)

ありがとう

4

1 に答える 1