此 shell 脚本将测试每个挂载点并在其中任何一个未挂载时向 root 发送邮件:
#!/bin/bash
while sleep 10m;
do
status=$(for mnt in /mnt/disk1 /mnt/disk2 /mnt/disk3; do mountpoint -q "$mnt" || echo "$mnt missing"; done)
[ "$status" ] && echo "$status" | mail root -s "Missing mount"
done
我的目的不是提供完整的交钥匙解决方案,而是为您的研究提供一个起点。为了满足您的精确需求,您将需要了解 bash 和 shell 脚本、cron 作业和其他 Unix 非常有用的工具。
这个怎么运作
#!/bin/bash
这表明这是一个 bash 脚本。
while sleep 10m; do
这将每 10 分钟重复一次循环中的命令。
status=$(for mnt in /mnt/disk1 /mnt/disk2 /mnt/disk3; do mountpoint -q "$mnt" || echo "$mnt missing"; done)
这将循环通过挂载点/mnt/disk1
、/mnt/disk2
和 ,/mnt/disk3
并测试每个都已挂载。如果不是,则会创建一条消息并将其存储在 shell 变量status
中。
你会想要/mnt/disk1 /mnt/disk2 /mnt/disk3
用你的挂载点列表替换,不管它们是什么。
这使用mountpoint
现代 linux 版本的标准命令。它是util-linux
包装的一部分。它可能在旧安装中丢失。
[ "$status" ] && echo "$status" | mail root -s "Missing mount"
如果status
包含任何消息,它们将通过主题行邮寄给 root Missing mount
。
该命令有几个不同的版本mail
。您可能需要调整参数列表以使用系统上的版本。
done
这标志着while
循环的结束。
笔记
上面的脚本使用了一个while
循环,每十分钟运行一次测试。如果您熟悉cron
系统,您可能希望使用它每 10 分钟运行一次命令,而不是while
循环。