есть ли какая-нибудь лучшая альтернатива этому?
-Да. Используйте подходящий менеджер служб и мусор, который используется скриптом
/etc/init.d/nagios
. В лучшем случае, вы используете скрипт System 5rc
в режиме совместимости под чем-то вроде upstart или systemd, в этом случае вы не получите некоторые полезные механизмы управления службой, которые недоступны в режиме совместимости , так как этот человек в AskFedora этого не делал. В худшем случае, вы работаете под System 5rc
и у вас нет реальной надежды сделать наполовину приличное управление сервисами с помощью этого скрипта.Существует множество систем управления сервисами. Я не буду вдаваться в подробности их установки, потому что это выходит за рамки данного ответа. Вместо этого, я сконцентрируюсь просто на том, как запустить nagios dæmon внутри них.
Семейство
даемонструментов
Семейство
даемонструментов
включает в себя наборы инструментов для управления службой:
- демон-инструменты Дэна Бернстайна
- Демонструменты Адама Сампсона освобождены
- демон-инструменты Брюса Гюнтера ... На бис
- Laurent Bercot's s6
- My nosh
- Gerrit Pape's runit
- Wayne Marshall's perp
Главное, что вам здесь нужно, это программа, которая становится деймоном. Для нагиос это 2- или 3-линейка. Можно смешивать и сопоставлять наборы инструментов. Вот несколько подходящих 2-строчных программ, использующих несколько различных наборов инструментов:
- A
run
file с набором инструментов nosh:#!/bin/noshи файлом
setuidgid nagios
nagiosrestart
, который вызывает безусловный автоматический перезапуск:#!/bin/shJust for kickks, I've added a pre-built service bundle for nagios to nosh, that will be available in version 1.13, that is just much this with a couple of standard frills such dependence information.
exec true- Файл
run
с набором инструментов runit:#!/bin/sh -e
exec chpst -u nagios nagios- Файл
run
с набором инструментов s6:#!/command/execlineb -P
s6-setuidgid nagios
nagios- Файл
run
с наборами инструментов daemontools, daemontools-encore или freedt:#!/bin/sh -e
exec setuidgid nagios nagios- Файл
rc.main
с perp toolet:#!/bin/sh -e
exec 2>&1
start() { execution runuid nagios nagios; }
reset() { exit 0; }
eval "$1" "$@"Эта программа для запуска отдельного сервиса является единственной особенностью данного сервиса. Остальное не меняется от службы к службе. Один запрос на статус сервиса одинаков для всех сервисов, с помощью такой команды, как
svstat
. Включение и выключение автоматического запуска при бутстопе - это вопрос символических связей. Ручной запуск и остановка службы - это вопросsvc -u
иsvc -d
. И так далее.nosh имеет несколько прокладок, если они нужны, например
systemctl статус
иinitctl статус
. Важно отметить, что у него естьservice
shim, так что если вам действительно нравитсяservice nagios status
, то вы можете продолжать пользоваться им. ☺ Но забудьте об этом отвратительном взгляде на бизнес lockfile, и о понятии ad-hoc мониторинге. Вы не имеете дело ни с чем подобным, если у вас есть соответствующий менеджер по обслуживанию. Менеджер по обслуживанию осуществляет мониторинг и следит за процессом деймонов.systemd
В коробке нет файла системного блока обслуживания для нагиос. Но многие уже написали свой собственный:
- nagios.service Дэвида Коуиса
nagios.service
для Source Mage Linuxnagios.service
, добавленный в Arch Linux' nagios package в 2012systemd не поставляется с командой shim
service
, но некоторые дистрибутивы Linux имеют один и тот же файл из другого исходного кода.Дальнейшее чтение
Я также делаю вводную Linux. Я вижу, где это означает общее количество аргументов. Вы можете использовать это так:
#!/bin/bash
if [ $# = 2 ]
then echo "Your name is $1 $2"
else
echo "You need two arguments"
fi
Предположим, следующий Bash:
#!/bin/bash
echo $#
, и вы запускаете такие как: ./ ARG.SH G JT T UU
Это возврат 4, 4 - это номер аргумента, который вы пройти к вашей оболочке.
Очень хорошо расследовать ваши параметры вашего сценария оболочки.
У меня есть следующее использование программы:
- Value Pattern -O PS_Command_Options
Тогда я могу исследовать такие как следующий код:
if [ "$1" = "--value" -a "$3" != "-o" -o "$1" != "--value" -a "$3" = "-o" -o ! $# -eq 4 ]; then
help;
exit;
fi;