В Linux я могу получить результаты времени безотказной работы сервера в секундах (значение) с помощью следующей команды:
cat /proc/uptime
Но в AIX у нас нет uptime
in /proc
. Если я просто введу uptime
, я получу результаты в днях, часах, минутах, но я хочу получить вывод только в секундах, например 86400 секунд или 30 секунд или любое другое значение.
С помощью этого вывода я хочу настроить оповещение от инструмента мониторинга SCOM, чтобы оно создавало оповещения, если время меньше 1800 секунд.
Из 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= 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