0

0

Linux怎么监控磁盘空间预警_Linux编写Shell提醒脚本【实战】

裘德小鎮的故事

裘德小鎮的故事

发布时间:2026-02-12 16:03:10

|

292人浏览过

|

来源于php中文网

原创

用 df -p 获取标准格式数据,取第5列去%后校验数字再判断,超90%时用logger记日志预警。

linux怎么监控磁盘空间预警_linux编写shell提醒脚本【实战】

怎么用 df 获取准确的可用空间数值

直接跑 df -h 看着方便,但脚本里不能依赖它——-h 会加单位(K/M/G),没法直接比较大小。必须用 df -P(POSIX 格式),保证字段对齐、无缩写、纯数字输出。

  • df -P / | tail -1 取最后一行,避免头行干扰
  • 第5列是已用百分比(如 87%),需用 sed 's/%//' 去掉百分号才能参与数值判断
  • 第4列是剩余块数(Available),单位是 1K blocks,若要换算成 GB,得除以 1024×1024 —— 但预警逻辑用百分比更稳妥,避免不同文件系统 block size 差异影响

Shell 脚本里怎么判断磁盘超限并触发提醒

别用 [ $used_pct -gt 90 ] 这种裸比较:如果 $used_pct 是空值或非数字(比如 df 失败时),Bash 会报错 integer expression expected,导致脚本中断。

  • 先用 [[ "$used_pct" =~ ^[0-9]+$ ]] 校验是否为纯数字
  • 再用 if (( used_pct > 90 )); then 做数值判断((( ))[ ] 更安全,支持直接算术)
  • 提醒方式优先选 logger -t "disk-alert" "root partition at ${used_pct}%",写入 /var/log/messages,比单纯 echo 可靠——即使无人值守也能查日志
  • 真要发邮件,用 mail -s "DISK FULL on $(hostname)" admin@example.com ,别依赖 GUI 工具(如 <code>notify-send),服务器通常没桌面环境

定时执行时为什么 df 结果和手动执行不一致

常见原因是 crontab 默认 PATH 极简(通常只有 /usr/bin:/bin),而某些系统上 df/bin/df,没问题;但如果你脚本里写了 which df 或调用了 sudo df,cron 就可能找不到命令或权限失败。

Qoder
Qoder

阿里巴巴推出的AI编程工具

下载
  • 脚本开头显式声明 PATH=/usr/local/bin:/usr/bin:/bin
  • 所有命令用绝对路径:/bin/df/usr/bin/logger/bin/mail
  • 在 crontab 里测试:加一行 * * * * * /bin/bash -c '/path/to/check_disk.sh >> /tmp/disk.log 2>&1',立刻看 /tmp/disk.log 是否报 command not found
  • 避免在脚本里用 sudo——改用 crontab -e 切到 root 用户下添加任务,更干净

为什么 /dev/shm 占用高却总被误报

/dev/shm 是基于内存的 tmpfs,它的“磁盘使用”本质是内存占用,且默认大小是 RAM 的一半。用 df 监控它会频繁触发误告警,尤其 Java 应用用了大量 DirectByteBuffer 时。

  • df 命令后加 -x tmpfs -x devtmpfs 排除虚拟文件系统
  • 或者明确只监控根分区:df -P / | tail -1,而不是 df -P 全盘扫
  • 若必须监控 /tmp,确认它是不是挂载为独立分区(findmnt /tmp),否则它只是 / 下的子目录,重复监控没意义

真正容易漏的是多挂载点场景:比如 /home/var/log 分别挂了不同磁盘。一个脚本只盯 /,可能 /var/log 已满但完全没反应——得把关键路径列进数组,循环检查。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

806

2023.08.22

alert怎么实现换行
alert怎么实现换行

alert通过使用br标签来实现换行。更多关于alert相关的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

499

2023.11.07

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1500

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

712

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

298

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

790

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

582

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

560

2023.07.20

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

4

2026.02.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9万人学习

Git 教程
Git 教程

共21课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号