首页 > 系统相关 >如何使用shell脚本检测磁盘使用率?

如何使用shell脚本检测磁盘使用率?

时间:2024-10-13 18:59:15浏览次数:4  
标签:脚本 shell 文件系统 echo fs 磁盘 使用率

在Linux系统中,使用shell脚本检测磁盘使用率是一种常见的任务。以下是一些基本步骤和示例脚本,帮助你实现这一功能。

1. 使用 df 命令

df 命令是查看文件系统磁盘空间使用情况的标准工具。你可以使用它来获取磁盘使用率的百分比。

2. 编写脚本

以下是一个简单的shell脚本示例,用于检测磁盘使用率并输出结果:

#!/bin/bash
 
# 设定警告阈值
THRESHOLD=80
 
# 检查所有文件系统
for fs in $(df -h | grep -vE '^Filesystem|tmpfs|cdrom'); do
    echo "检查文件系统: $fs"
    usage=$(echo $fs | awk '{print $5}' | sed 's/%//g') # 获取使用率百分比
    echo "使用率: $usage%"
 
    # 判断使用率是否超过阈值
    if [ "$usage" -ge "$THRESHOLD" ]; then
        echo "警告: $fs 的使用率超过 $THRESHOLD%"
    fi
done

 

3. 解释脚本
  • #!/bin/bash:指定脚本使用bash解释器。
  • THRESHOLD=80:设定警告阈值,这里设置为80%。
  • df -h:显示文件系统的磁盘使用情况,-h表示以易读的格式显示(如GB、MB)。
  • grep -vE '^Filesystem|tmpfs|cdrom':排除系统文件系统、tmpfs和cdrom。
  • awk '{print $5}':使用awk打印第五列,即使用率。
  • sed 's/%//g':删除使用率中的百分号,以便进行数值比较。
4. 运行脚本
  1. 将上述脚本保存到一个文件中,例如 disk_usage.sh
  2. 给脚本文件执行权限:chmod +x disk_usage.sh
  3. 运行脚本:./disk_usage.sh
5. 扩展功能
  • 发送邮件通知:如果磁盘使用率超过阈值,可以扩展脚本发送邮件通知。
  • 监控特定文件系统:可以修改脚本,仅监控特定的文件系统。
  • 定时执行:可以使用cron定时任务定期执行脚本。
6. 示例:发送邮件通知

如果你希望在磁盘使用率超过阈值时发送邮件通知,可以使用如下脚本:

#!/bin/bash
 
# 设定警告阈值
THRESHOLD=80
 
# 邮件接收者
EMAIL="[email protected]"
 
# 检查所有文件系统
for fs in $(df -h | grep -vE '^Filesystem|tmpfs|cdrom'); do
    usage=$(echo $fs | awk '{print $5}' | sed 's/%//g') # 获取使用率百分比
    echo "检查文件系统: $fs"
    echo "使用率: $usage%"
 
    # 判断使用率是否超过阈值
    if [ "$usage" -ge "$THRESHOLD" ]; then
        echo "警告: $fs 的使用率超过 $THRESHOLD%"
        echo "警告: $fs 的使用率超过 $THRESHOLD%" | mail -s "磁盘空间警告" $EMAIL
    fi
done

确保你的系统已经安装了 mail 命令,并且配置了邮件发送功能。

综上所述,你可以有效地监控Linux系统的磁盘使用率,并在必要时采取相应的措施。

标签:脚本,shell,文件系统,echo,fs,磁盘,使用率
From: https://www.cnblogs.com/ataoxz/p/18462765

相关文章

  • shell安装http启动脚本
    利用case语法安装httpd服务[root@localhostshell]#cathttpd_start1.sh#!/bin/bash#ThisscriptmanagestheApacheHTTPserver.#byauthorriverson2024-10-12#检查是否提供了参数if[-z"$1"];then  echo"Usage:$0{start|stop|restart|status}"......
  • Shell 编程:流程控制
    Shell编程:流程控制if语句ifconditionthencommand1command2...commandNfiifconditionthencommand1command2...commandNelsecommandfiifcondition1thencommand1elifcondition2thencommand2else......
  • Windows10中安装了ubuntu虚拟机后xshell无法连接到ubuntu
    安装了ubuntu虚拟机后发现shell无法连接到ubuntu的排查步骤:步骤1:检查虚拟机网络配置确认虚拟机网络模式:确认虚拟机的网络模式是否设置为桥接模式或NAT模式。桥接模式可以让你的虚拟机在网络中拥有独立的IP地址,而NAT模式则通过宿主机的网络连接来访问外部网络。查看虚拟机IP地......
  • 如何从命令行界面运行交互式PHP Shell
    从命令行界面运行交互式PHPShell(也称为PHPCLI交互模式)非常简单。你可以通过以下步骤来启动它:打开命令行界面:在Windows上,你可以使用命令提示符(CMD)或PowerShell。在macOS或Linux上,你可以使用终端(Terminal)。运行PHP命令:在命令行中输入以下命令并按回车:php-a这个命令会启......
  • 嵌入式Linux系统磁盘空间问题
    问题描述:我的系统板是stm32mp157,属于mpu,搭载了嵌入式Linux系统,我将系统通过STM32CubeProgrammer烧录在了一张32g的sd卡上,可是系统烧录完毕启动板子后,使用命令df-h查看发现磁盘空间只有1个多g,如下图上网查看,问题可能出在我的系统是由buildroot进行构建的,某些嵌入式系统的构......
  • 第109天:免杀对抗-PowerShell&混淆&分离加载&特征修改&EXE生成&填充替换
    知识点知识点:1、Powershell-对变量数据做文章2、Powershell-对Shellcode做文章3、Powershell-对执行代码特征做文章章节点:编译代码面-ShellCode-混淆编译代码面-编辑执行器-编写编译代码面-分离加载器-编写程序文件面-特征码定位-修改程序文件面-加壳花指令-资源代码......
  • 107-免杀对抗-C&C++&溯源ShellCode上线&混淆变异算法&回调编译执行
    知识点#知识点:1、ShellCode-分析&朔源&感知2、ShellCode-混淆&编码&算法3、回调执行解析-API&汇编&句柄#章节点:编译代码面-ShellCode-混淆编译代码面-编辑执行器-编写编译代码面-分离加载器-编写程序文件面-特征码定位-修改程序文件面-加壳花指令-资源代码加载面-Dll......
  • 【应急响应+Linux】常见的rootkit隐藏手段:通过劫持shell环境,实现文件、进程名隐藏等操
    原理修改或构造/etc/profile.d/下sh文件,劫持环境变量,从而实现覆盖常见的命令,如:ps、ls、lsof等;实现:1、配置环境变量shell脚本:重新登录用户之后;或者使用命令source/etc/profile更新配置,使生效;2、根目录下存在的myshell.sh文件被隐藏:执行ls命令效果:排查方法:使用strace......
  • 【shell脚本】远程传参例
    原创luojiabaolv51933#!/bin/bash#addbyhkbn2024/05/10#uploadfilesinErpAck#ebsserver#...ret=0#appserverSRC_FTP_BASE="/HNAS/CUX003/Esker/files"#middleserverL_DEST_FTP_USER="erpclient";L_DEST_FTP_SERVER="192.16......
  • 安全:列出linux中可登录shell/ssh/sudo的用户
    一,列出可登录shell的用户root@lhdpc:~#grepbash/etc/passwdroot:x:0:0:root:/root:/bin/bashliuhongdi:x:1000:1000:liuhongdi,,,:/home/liuhongdi:/bin/bash只显示用户名:root@lhdpc:~#grepbash/etc/passwd|cut-d:-f1rootliuhongdi也可以把常见的3个不允许登录......