Назад | Перейти на главную страницу

Можно ли переписать этот скрипт перезапуска в одну строчку?

Интересно, можно ли ниже этот скрипт переписать в одну строчку? Наверное, с || ?

ps auxw | grep nagios-nrpe-server | grep -v grep > /dev/null

if [ $? != 0 ]
then
        /etc/init.d/nagios-nrpe-server start > /dev/null
fi

я пытался ps auxw | grep nagios-nrpe-server | grep -v grep > /dev/null || /etc/init.d/nagios-nrpe-server start но он все время перезапускает службу, даже если она запущена ..

Вам нужно переключить ваши операторы grep. Ваше второе утверждение для фильтрации grep всегда будет успешным, потому что он всегда рядом.

Итак, сначала отфильтруйте grep, а затем проверьте процесс:

ps auxw | grep -v grep | grep nrpe > /dev/null || /etc/init.d/nagios-nrpe-server start

Согласно Список пакетов Debian двоичный файл nagios-nrpe-server просто называется nrpe, поэтому я заменил это.

С помощью pgrep:

pgrep nrpe > /dev/null || /etc/init.d/nagios-nrpe-server start > /dev/null

или используя подоболочку:

(pgrep nrpe || /etc/init.d/nagios-nrpe-server start) > /dev/null

Из pgrep(1) страница руководства:

pgrep просматривает текущие запущенные процессы и перечисляет идентификаторы процессов, которые соответствуют критериям выбора для stdout.

Если имя процесса не nrpe, вам нужно заменить аргумент на pgrep с фактическим именем процесса.