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

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

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

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

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 / вы / хотите / существовать / существовать || выход 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 на переднем плане с помощью C-c и запустите его как обычный процесс деамона.

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