Как настроить скрипт monit, чтобы проверить, существует ли каталог, и создать его, если его нет

В документации monit я вижу, что есть команда проверки каталога, но я не вижу примеров того, как использовать ее, чтобы увидеть, существует ли каталог и не создает ли он каталог с помощью команды mkdir.

4 ответа

Это работает для меня:

check directory my_path path /mnt/some_mount_point
  if does not exist then exec "/usr/local/bin/create_mnt.sh"

Это может помочь вам mkdir -p $directory должен делать то, что вы хотите. -p опция создаст любые необходимые родительские каталоги. Если $directory уже существует как каталог, команда ничего не делает и успешно выполняется. Если $directory - обычный файл, он останется нетронутым, nd не прекратит работу, если каталог уже существует, поэтому вы можете сделать все это сразу с помощью:

mkdir -p / some / directory / you / want / to / Существовать || выход 1

Алек в значительной степени имеет это, но вам не нужно создавать скрипт для этого. Вы можете запустить mkdir напрямую (хотя обратите внимание, вам нужен полный путь к нему):

check directory my_path path /mnt/some_mount_point
  if does not exist then exec "/bin/mkdir /mnt/some_mount_point"

В зависимости от вашего пути, это может помочь добавить -p переключитесь на mkdir, если вам нужны подпапки и / или дубликаты для подавления ошибок.

Не нужно создавать отдельный скрипт, вам нужно использовать bash с -c опция:

check directory my_path path /some/path/to/dir
  if does not exist then exec "/bin/bash -c 'mkdir -p /some/path/to/dir'"
  as uid <some_user> and gid <some_group>

monit процесс запускается от пользователя root, поэтому убедитесь, что вы не создаете каталоги как root (предположительно, вам это не нужно), а затем вы можете убить monit обработать и запустить его на переднем плане с

monit -Ivv

и увидеть выходные отладочные заметки. Как только нет ошибок, вы можете остановиться monit на переднем плане с Cc и запустите его как обычный процесс deamon.

Надеюсь это поможет.

Другие вопросы по тегам