linux - 你将如何制作一个 shell 脚本来监控挂载和日志问题?

标签 linux bash shell monitoring mount-point

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

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

最佳答案

此 shell 脚本将测试每个挂载点并在其中任何一个未挂载时将邮件发送到根目录:

#!/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

我在这里的目的不是提供完整的交 key 解决方案,而是为您的研究提供一个起点。 为使其准确满足您的需求,您需要了解 bash 和 shell 脚本、cron 作业以及 Unix 的其他非常有用的工具。

工作原理

  • #!/bin/bash

    这表明这是一个 bash 脚本。

  • sleep 时 10 米;做

    这会每 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 "缺少挂载"

    如果 status 包含任何消息,它们将以 Missing mount 为主题邮寄到 root。

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

  • 完成

    这标志着 while 循环的结束。

注意事项

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

关于linux - 你将如何制作一个 shell 脚本来监控挂载和日志问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49640270/

相关文章:

linux - 一个 bash 循环来回显所有可能的 ASCII 字符

linux - if语句中的shell条件

linux - shell中两个日期之间的天数差异

bash - 通过 bash 读取文件夹中的任何 .txt 文件

php - 哪个PHP shell ?

linux - 不断将控制台的输出写入文件

c - Linux内核编码风格

linux - BASH:如何检测最后进入目录的文件? (不是时间戳)

node.js - 是否可以仅在尚未安装 npm 包的情况下安装它?

c - RSA_private_decrypt 失败