在 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 分钟前重新启动";否则回显“确定”;菲