首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何制作一个shell脚本来监视挂载和记录问题?

如何制作一个shell脚本来监视挂载和记录问题?
EN

Stack Overflow用户
提问于 2018-04-03 22:59:01
回答 1查看 1.3K关注 0票数 1

我正在寻找一个良好的方式,监测和日志挂载在一个CentOS 6.5框。由于我对Linux脚本还不熟悉,所以我不知道是否有一些已经存在并得到证明的东西可以直接插入,或者是否有一个好的方法,我应该将我的研究引导到自己的构建上。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-04 00:17:44

此shell脚本将测试每个挂载点,如果没有挂载,则将邮件发送到root:

代码语言:javascript
复制
#!/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根目录。 mail命令有几个不同的版本。您可能需要调整参数列表以处理系统上的版本。
  • done 这标志着while循环的结束。

备注

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49640270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档