您如何制作shell脚本来监控挂载和日志问题?

时间:2018-04-03 22:59:01

标签: linux bash shell monitoring mount-point

我正在寻找一种在CentOS 6.5盒子上监视和记录挂载的好方法。由于我是Linux shell脚本的新手,我有点不知道是否有一些已经存在并证明我可以插入的东西,或者是否有一个好的方法我应该指导我的研究来构建我自己的。 / p>

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

1 个答案:

答案 0 :(得分:1)

如果没有挂载任何挂载点,则此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包含任何消息,则会以主题行Missing mount邮寄到root。

    mail命令有几个不同版本。您可能需要调整参数列表以使用系统上的版本。

  • done

    这标志着while循环结束。

注释

上面的脚本使用while循环,每十分钟运行一次测试。如果您熟悉cron系统,则可能需要使用它来每10分钟运行一次命令,而不是while循环。