Я хочу, чтобы monit проверял конкретный процесс и запускал его только тогда, когда доступна зависимая файловая система.
check process Tomcat with pidfile /path/to/tomcat/TOMCAT.PID
depends on abc
start program = "../scripts/start_tomcat.sh"
stop program = "../scripts/stop_tomcat.sh -force"
check filesystem abc with path /path/to/abc
if does not exist then restart
В приведенной выше конфигурации, когда файловая система выходит из строя, monit постоянно запускает и останавливает tomcat, что заставляет порт 8080 постоянно прослушивать. Я хочу, чтобы эта стартовая программа запускалась только тогда, когда файловая система доступна. Не запускайте и не останавливайте его повторно.
Здесь вы определили начать сначала как действие на файловая система, поэтому, когда файл не существует, он будет в основном распространять начать сначала действие для всех зависимых правил проверки, как указано в документации:
Если служба перезапущена, она сначала остановит все активные службы, которые от нее зависят, а после запуска запустит все зависимые службы, которые были активны до повторного перезапуска.
Как заявлял кто-то ранее, почему файловая система выходит из строя? Если это смонтированный каталог, лучше всего будет снова смонтировать файловую систему с пользовательскимexec действие в правиле для файловой системы и позволить monit запустить tomcat через правило управления зависимостями.
Подробнее на: https://mmonit.com/monit/documentation/monit.html#SERVICE-DEPENDENCIES