![如何以秒為單位取得 AIX 伺服器結果的伺服器正常運作時間](https://rvso.com/image/170273/%E5%A6%82%E4%BD%95%E4%BB%A5%E7%A7%92%E7%82%BA%E5%96%AE%E4%BD%8D%E5%8F%96%E5%BE%97%20AIX%20%E4%BC%BA%E6%9C%8D%E5%99%A8%E7%B5%90%E6%9E%9C%E7%9A%84%E4%BC%BA%E6%9C%8D%E5%99%A8%E6%AD%A3%E5%B8%B8%E9%81%8B%E4%BD%9C%E6%99%82%E9%96%93.png)
在 Linux 中,我可以使用以下命令來取得以秒為單位的伺服器正常運行時間結果(值)
cat /proc/uptime
uptime
但在 AIX 中,我們沒有/proc
.如果我只輸入uptime
,我會得到以天、小時、分鐘為單位的結果,但我只想以秒為單位獲得輸出,例如 86400 秒或 30 秒或任何值。
有了這個輸出,我想從 SCOM 監控工具設定一個警報,以便在少於 1800 秒時建立警報。
從 SCOM,我可以執行 shell 命令。
答案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}'
;如果 [ $正常運作時間 -lt 300 ];然後 echo "300 分鐘前重新啟動";否則回顯「確定」;菲