![AIX サーバーの稼働時間を数秒で取得する方法](https://rvso.com/image/170273/AIX%20%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E7%A8%BC%E5%83%8D%E6%99%82%E9%96%93%E3%82%92%E6%95%B0%E7%A7%92%E3%81%A7%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
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