Как настроить скрипт 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.
Надеюсь это поможет.