Интересно, можно ли ниже этот скрипт переписать в одну строчку? Наверное, с ||
?
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
с фактическим именем процесса.