Монит отображает ложное число из моего скрипта
Я написал скрипт для получения реального времени работы и отображения в monit
, Но я думаю, что он отображает только состояние ошибки выхода. Мой скрипт uptime:
#!/bin/sh
uptime=`uptime | awk -F " " '{print $3}'`
echo $uptime
exit $uptime
Когда я запускаю его в терминале, результат равен true
For example:
# uptime
08:39:01 up 421 days, 19:54, 1 user, load average: 0.06, 0.10, 0.06
# ./up_time.sh
421
Скрипт работает хорошо. Но когда monit начинает запускать этот скрипт из файла up_time.conf;
Program Status Last started Exit value
days_up Status ok Thu, 01 Aug 2013 08:41:08 165
Я видел в браузере. я думаю что Exit value
код ошибки выхода bash Я не могу понять, почему другой скрипт работает нормально, но этот не делает свою работу
Говоря о которых, monit
up_time.conf
файл выглядит так:
check program days_up with path "/etc/monit/scripts/up_time.sh"
if status < 1 then alert
2 ответа
Значением выхода команды является 8-разрядное целое число без знака (или 1 байт). Это означает, что значение выхода должно быть в диапазоне от 0 до 255. Кажется, ваш скрипт пытается установить значение выхода 412, которое просто недопустимо в качестве кода выхода. Дополнительные биты будут игнорироваться, и поэтому фактическое значение, которое будет возвращено, равно 156.
412 = (0001 1001 1100), 156 = (1001 1100)
Вот некоторые результаты использования Bash $?
показывать. `$? переменная хранит значение выхода предыдущей команды.
root@:~# bash -c 'exit 5' ; echo $?
5
root@:~# bash -c 'exit 253'; echo $?
253
root@:~# bash -c 'exit 255'; echo $?
255
root@:~# bash -c 'exit 256'; echo $?
0
root@:~# bash -c 'exit 257'; echo $?
1
root@:~# bash -c 'exit 412' ; echo $?
156
Зачем exit $uptime
? Разве это не должно быть просто exit 0
, означает, что ваш сценарий оболочки закончил хорошо?