AIX サーバーの稼働時間を数秒で取得する方法

AIX サーバーの稼働時間を数秒で取得する方法

Linuxでは、以下のコマンドを使用して、サーバーの稼働時間を秒単位(値)で取得できます。

cat /proc/uptime

uptimeしかし、AIX にはがありません/proc。 と入力するだけでuptime、日、時間、分単位で結果が返されますが、86400 秒や 30 秒などの秒単位、または任意の値でのみ出力を取得したいのです。

この出力を使用して、SCOM 監視ツールからアラートを設定し、1800 秒未満の場合にアラートを作成します。

SCOM からシェル コマンドを実行できます。

答え1

適応できる異なる OS でプロセスの稼働時間を取得するにはどうすればよいですか?プロセス 1 (init) の経過秒数をかなり近い近似値として返します。

#!/bin/sh
t=$(LC_ALL=POSIX ps -o etime= -p 1)
d=0 h=0
case $t in *-*) d=$((0 + ${t%%-*})); t=${t#*-};; esac
case $t in *:*:*) h=$((0 + ${t%%:*})); t=${t#*:};; esac
s=$((10#$d*86400 + 10#$h*3600 + 10#${t%%:*}*60 + 10#${t#*:}))
printf '%d\n' "$s"

答え2

以下のワンライナーを使用してください。

uptime= uptime | awk -F ',' ' {print $1" "$2}'|awk ' {print $3" "$4" "$5}' | sed '1,$s/:/ /' | awk ' {if ($4 =="users") print $1*60 + $2;else if ($4 =="user") print $1*60 + $2;else if ($2=="mins") print $1;else print $1*24*60 + $3*60 + $4}';if [ $uptime -lt 300 ]; then echo "300分以内に再起動しました"; else echo "OK"; fi

関連情報