如何设置 monit 脚本来检查目录是否存在,如果不存在则创建它

如何设置 monit 脚本来检查目录是否存在,如果不存在则创建它

在 monit 文档中,我可以看到有一个检查目录命令,但我看不到任何关于如何使用它来查看目录是否存在以及如果不存在则使用 mkdir 命令创建目录的示例。

答案1

这对我有用:

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

答案2

这可能有助于您mkdir -p $directory做您想做的事情。该-p选项将创建任何必要的父目录。如果$directory已经作为目录存在,则该命令不执行任何操作并成功。如果 $directory 是常规文件,它将保持不变,并且如果目录已经存在也不会失败,因此您可以使用以下方式一次性完成所有操作:

mkdir -p /某个/目录/你/想要/存在 || exit 1

答案3

Alec 基本上有它,但你不需要创建脚本来执行此操作。你可以mkdir直接运行(但请注意,你需要它的完整路径):

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

根据您的路径,-p如果您需要子文件夹和/或重复错误抑制,将开关添加到 mkdir 可能会有所帮助。

答案4

无需创建单独的脚本,您需要使用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 在前台停止并像往常一样启动守护进程。

希望这可以帮助。

相关内容