You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写Shell脚本监控CentOS 6.5挂载并记录异常?

Hey there! 作为Shell脚本新手,你这个挂载监控的需求其实挺常见的,既有现成的成熟工具可以直接用,也能自己写个简单脚本搞定,我给你分两种情况详细说说:

一、现成成熟方案推荐

如果你想快速实现功能,不想折腾写代码,那monit绝对是个好选择——它是轻量级的系统监控工具,专门用来盯挂载点、进程、文件系统这些,配置起来也不复杂。

操作步骤大概是这样:

  1. 先安装monit:CentOS 6.5直接用yum装就行,执行yum install monit
  2. 配置监控规则:你可以编辑主配置文件/etc/monit.conf,或者在/etc/monit.d/目录下新建一个专门的配置文件(比如mount_check.conf),每个挂载点的配置大概长这样:

check filesystem point1 with path /mnt/point1
if not mounted then alert
on alert exec "/bin/echo '[$(date "+%Y-%m-%d %H:%M:%S")] 挂载点/mnt/point1未正常挂载' >> /var/log/mount_monitor.log"
check filesystem point2 with path /mnt/point2
if not mounted then alert
on alert exec "/bin/echo '[$(date "+%Y-%m-%d %H:%M:%S")] 挂载点/mnt/point2未正常挂载' >> /var/log/mount_monitor.log"

剩下7个挂载点照着上面的格式复制修改就行
  1. 启动并设置开机自启:service monit start,然后chkconfig monit on

monit会自动周期性检查,一旦挂载点出问题就自动把日志写到你指定的文件里,省心又靠谱。

二、自己编写Shell脚本实现(适合新手练手)

要是你想借着这个机会学点Shell脚本知识,那自己写个脚本也不难,逻辑很简单:遍历9个挂载点,逐个检查是否正常挂载,异常就记录日志。

给你写个示例脚本,你可以直接改了用:

#!/bin/bash
# 定义要监控的9个挂载点,把这里的路径换成你实际的挂载点
MONITOR_POINTS=(/mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4 /mnt/disk5 /mnt/disk6 /mnt/disk7 /mnt/disk8 /mnt/disk9)
# 日志文件的保存路径,确保脚本有写入权限
LOG_PATH="/var/log/mount_status.log"

# 获取当前时间,用来标记日志时间戳
NOW=$(date "+%Y-%m-%d %H:%M:%S")

# 逐个检查挂载点
for point in "${MONITOR_POINTS[@]}"
do
    # 用mount命令检查这个挂载点是否存在
    if ! mount | grep -q "^.* ${point} "; then
        # 异常信息写入日志
        echo "[${NOW}] 警告:挂载点 ${point} 未正常挂载!" >> ${LOG_PATH}
    fi

    # 可选:额外检查磁盘使用率,比如超过90%就记录
    # 注意:如果挂载点没挂载,这行可能会报错,所以可以加个判断
    if mount | grep -q "^.* ${point} "; then
        USAGE=$(df -h ${point} | awk 'NR==2 {print $5}' | sed 's/%//')
        if [ ${USAGE} -gt 90 ]; then
            echo "[${NOW}] 警告:挂载点 ${point} 磁盘使用率过高,当前为 ${USAGE}%" >> ${LOG_PATH}
        fi
    fi
done

脚本使用方法:

  1. 把上面的代码保存成文件,比如mount_monitor.sh
  2. 给脚本加执行权限:chmod +x mount_monitor.sh
  3. 测试运行:./mount_monitor.sh,看看日志文件里有没有内容
  4. 设置定时自动执行:用crontab实现周期性检查,比如每分钟检查一次:
    • 执行crontab -e打开定时任务编辑界面
    • 添加一行:* * * * * /root/mount_monitor.sh(这里换成你脚本的实际路径)
    • 保存退出就行,crontab会自动生效

新手注意点:

  • 挂载点路径一定要写对,别写错了导致监控失效
  • 日志文件路径要确保脚本有写入权限,比如可以先执行touch /var/log/mount_status.log再给权限chmod 664 /var/log/mount_status.log
  • 如果不需要磁盘使用率检查,把那部分代码删掉就行
总结

如果追求快速稳定,直接用monit这类工具最省心;如果想学习Shell脚本,自己写这个简单脚本完全够用,还能顺便掌握循环、条件判断、命令组合这些基础知识点~

内容的提问来源于stack exchange,提问作者Daniel Cox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:27:44