1

我正在寻找一种在 CentOS 6.5 机器上监视和日志挂载的好方法。由于我是 Linux shell 脚本的新手,所以我有点不知所措,不知道是否有一些东西已经存在并证明了我可以插入,或者是否有一个好方法我应该将我的研究用于构建我自己的。

最后,我希望运行的是检查服务器上的 9 个挂载中的每一个,以确认它们已启动并正常工作。如果有问题,我想将信息记录到文件中,可能通过电子邮件发送信息,然后检查下一次安装。5-10分钟后我想再次运行它。我知道这可能不是必需的,但如果存在问题,我们正在尝试收集证据或向供应商表明他们所说的问题不是问题。

4

1 回答 1

2

此 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循环。

于 2018-04-04T00:17:44.323 回答