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

Monit - демонизировать недемонический процесс?

У меня есть процесс ruby, который не запускается как демон (он работает на переднем плане), но может генерировать файл pid. У меня вопрос: всегда ли Monit отслеживает фоновые / демонизированные процессы?

Раньше я использовал Bluepill, и это было поведение по умолчанию:

Обратите внимание: поскольку мы указали PID-файл и команду запуска, bluepill предполагает, что процесс будет демонизировать себя. Если мы хотим, чтобы bluepill демонстрировал его для нас, мы можем это сделать (обратите внимание, что нам все еще нужно указать файл PID): process.daemonize = true

Есть что-то подобное для monit? AFAIK, пока процесс (демон или нет) может создать файл PID, Monit определит, демонизирует ли он себя, и не будет демонизировать его, и наоборот ...

Спасибо

Он будет работать нормально для monit. Вы можете сделать так, чтобы он проверил файл pid процесса, и в основном то, что делает monit, делает

ps aux | grep pid#

Если он там, он думает, что он работает. Если у вас нет файла pid, вы можете проверить процесс также с помощью чего-то вроде

check process myprocessname
    matching "myprocessname"

Это в значительной степени

ps aux | grep myprocessname

Простой способ - деамонизировать ваш недемонический процесс. То есть создать сценарий оболочки:

#!/bin/sh
/usr/local/bin/your_program < /dev/null &

А затем используйте этот сценарий как демон для запуска. Он запустит вашу программу (которая создаст файл PID) в фоновом режиме, а затем немедленно вернет управление, что позволит избежать тайм-аута и ложного уничтожения с помощью monit.