Linuxでは、次のコマンドを使用して数秒以内にサーバーの稼働時間の結果(値)を取得できます。
cat /proc/uptime
uptime
しかし、AIXでは/proc
。を入力すると、uptime
日、時間、分単位で結果が得られますが、86400秒や30秒などの秒単位で出力したいです。
この出力を使用して、1800秒未満が経過したときにアラームを生成するようにSCOMモニタリングツールでアラームを設定したいと思います。
SCOM でシェルコマンドを実行できます。
答え1
あなたは適応できますさまざまなオペレーティングシステムでプロセスの稼働時間を取得する方法は?プロセス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 | 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分前に再起動"、そうでなければecho "OK";