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

如何编写Shell脚本实现数值比较与邮件告警?

Shell脚本实现锁表条目阈值告警

基础版脚本(读取fig.txt判断告警)

#!/bin/bash

# 读取fig.txt中的锁表使用条目数
LOCK_COUNT=$(cat fig.txt)

# 按阈值判断并发送邮件告警
if [ "$LOCK_COUNT" -le 5000 ]; then
    echo "lock file overflow" | mail -s "Lock Table Alert" your-alert-email@example.com
else
    echo "lock file is ok" | mail -s "Lock Table Status" your-alert-email@example.com
fi

整合版脚本(直接从日志提取并判断)

如果不想依赖中间文件fig.txt,可以直接从源日志lngtrans2.out提取数值并完成判断,更适合自动化场景:

#!/bin/bash

# 从lngtrans2.out中提取当前使用的锁表条目数
LOCK_COUNT=$(grep "Lock table entries" lngtrans2.out | cut -d " " -f 14)

# 阈值判断与邮件发送
if [ "$LOCK_COUNT" -le 5000 ]; then
    echo "lock file overflow" | mail -s "Lock Table Alert" your-alert-email@example.com
else
    echo "lock file is ok" | mail -s "Lock Table Status" your-alert-email@example.com
fi

关键说明

  • 数值提取:grep "Lock table entries" lngtrans2.out | cut -d " " -f 14 通过grep定位目标行,再用cut以空格为分隔符提取第14个字段(即当前使用的数值)
  • 整数比较:-le 是Shell中整数比较的运算符,表示"小于等于",对应还有-gt(大于)等
  • 邮件发送:需要确保系统已配置邮件服务(如Postfix、Sendmail),替换your-alert-email@example.com为实际告警邮箱

参考操作示例

pkity:/tech/cmd/dump# cat lngtrans2.out
Lock table entries in use:         8 of 8000
Lock table high water mark:        12
Shared memory allocated:           1788 K (1 segments. The last segment was not locked in memory)

pkity:/tech/cmd/dump# grep "Lock table entries" lngtrans2.out | cut -d " " -f 14 > fig.txt

pkity:/tech/cmd/dump# cat fig.txt
8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:38:26