centos

如何定制CentOS消息提醒

小樊
33
2025-12-09 17:10:33
栏目: 智能运维

定制 CentOS 消息提醒的实用方案

一 通知渠道与适用场景

二 快速上手 常用命令示例

三 进阶定制 日志转发与频率控制

四 桌面环境通知与多用户场景

五 实战模板 磁盘阈值告警脚本

#!/usr/bin/env bash
# 用法: disk_alert.sh <阈值百分比,如 80>
set -Eeuo pipefail

THRESHOLD="${1:-80}"
PART="${2:-/}"
LOGFILE="/var/log/disk_alert.log"
SUBJECT="【磁盘告警】$(hostname): ${PART} 使用率过高"
MSG="在 $(date '+%F %T')${PART} 使用率 ${USAGE}% ≥ ${THRESHOLD}%"

# 获取使用率(去掉百分号)
USAGE=$(df -hP "$PART" | awk 'NR==2 {gsub(/%/,"",$5); print $5}')

if [ "$USAGE" -ge "$THRESHOLD" ]; then
  # 写入系统日志
  logger -t "DISK_ALERT" "$MSG"

  # 发送邮件(确保已配置好 /etc/mail.rc 或 Postfix)
  echo "$MSG" | mail -s "$SUBJECT" admin@example.com || true

  # 尝试桌面通知(忽略无 GUI 的报错)
  for disp in :0 :1 :2; do
    if sudo -u "$(who | awk -v d="$disp" '$5 ~ d {print $1; exit}')" \
         DISPLAY="$disp" DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$(id -u "$(who | awk -v d="$disp" '$5 ~ d {print $1; exit}')")/bus" \
         notify-send "磁盘告警" "$MSG" 2>/dev/null; then
      break
    fi
  done 2>/dev/null || true

  echo "$(date '+%F %T') $MSG" >> "$LOGFILE"
fi

提示

0
看了该问题的人还看了