【Linux运维】shell脚本检查服务器内存和CPU利用率

这篇具有很好参考价值的文章主要介绍了【Linux运维】shell脚本检查服务器内存和CPU利用率。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在管理服务器时候写了一个 shell脚本,在服务上实现每天凌晨3点查系统的指定文件夹下的容量大小,如果超过10G就要删除3天前的内容,还要时刻查询内存和cpu利用率,如果超过80%就要提示用户出现过载

#!/bin/bash

# 指定要检查的文件夹路径
folder_path="/path/to/folder"

# 获取当前日期前三天的日期
three_days_ago=$(date -d "3 days ago" +%Y%m%d)

# 获取当前日期时间
datetime=$(date +%Y%m%d_%H%M%S)

# 检查文件夹容量,如果超过10G就删除3天前的内容
folder_size=$(du -s $folder_path | awk '{print $1}')
if [ $folder_size -gt 10485760 ]; then
  echo "$datetime: Folder size exceeds 10G, deleting files before $three_days_ago"
  find $folder_path -type f -name "*" -mtime +3 -delete
fi

# 检查内存和CPU利用率,如果超过80%就提示用户出现过载
mem_usage=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
cpu_usage=$(top -bn1 | awk '/Cpu/{printf("%.2f"), $2}')
if (( $(echo "$mem_usage > 80" | bc -l) )) || (( $(echo "$cpu_usage > 80" | bc -l) )); then
  echo "$datetime: System is overloaded, please take action"
fi

将以上代码保存为一个.sh文件,然后通过crontab在每天凌晨3点运行即可:

crontab -e
0 3 * * * /path/to/script.sh

以下是 system_check.sh 脚本中每一行的详细解释:

#!/bin/bash

这是 Bash 脚本的第一行,用于指定脚本使用的解释器。在这里,#!/bin/bash 表示使用 Bash 解释器来执行该脚本。

# 指定要检查的文件夹路径
folder_path="/path/to/folder"

这一行定义了一个变量 folder_path,用于指定要检查的文件夹路径。在这里,变量的值为 /path/to/folder,可以根据实际情况修改。

# 获取当前日期前三天的日期
three_days_ago=$(date -d "3 days ago" +%Y%m%d)

这一行使用 date 命令获取当前日期前三天的日期,并将其保存到变量 three_days_ago 中。+%Y%m%d 表示设置日期的格式为年月日,例如 20220101

# 获取当前日期时间
datetime=$(date +%Y%m%d_%H%M%S)

这一行使用 date 命令获取当前日期时间,并将其保存到变量 datetime 中。+%Y%m%d_%H%M%S 表示设置日期时间的格式为年月日_时分秒,例如 20220101_120000

# 检查文件夹容量,如果超过10G就删除3天前的内容
folder_size=$(du -s $folder_path | awk '{print $1}')
if [ $folder_size -gt 10485760 ]; then
  echo "$datetime: Folder size exceeds 10G, deleting files before $three_days_ago"
  find $folder_path -type f -name "*" -mtime +3 -delete
fi

这一段代码用于检查文件夹容量,如果超过10G就删除3天前的内容。具体来说:

  • du -s $folder_path 命令用于计算指定文件夹的容量大小,并将结果保存到变量 folder_size 中。-s 表示只显示总计大小,不显示每个子目录的大小。
  • if [ $folder_size -gt 10485760 ]; then 表示如果文件夹的容量大小超过10G(即 10485760 KB),则执行下面的命令。
  • echo "$datetime: Folder size exceeds 10G, deleting files before $three_days_ago" 表示输出一条提示信息,指示文件夹容量超过10G,并将日期时间和三天前的日期插入到提示信息中。
  • find $folder_path -type f -name "*" -mtime +3 -delete 命令用于查找并删除文件夹中3天前的文件。-type f 表示只查找文件,-name "*" 表示查找所有文件,-mtime +3 表示查找修改时间在3天前的文件,-delete 表示删除查找到的文件。
# 检查内存和CPU利用率,如果超过80%就提示用户出现过载
mem_usage=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
cpu_usage=$(top -bn1 | awk '/Cpu/{printf("%.2f"), $2}')
if (( $(echo "$mem_usage > 80" | bc -l) )) || (( $(echo "$cpu_usage > 80" | bc -l) )); then
  echo "$datetime: System is overloaded, please take action"
fi

这一段代码用于检查内存和 CPU 利用率,如果超过80%就提示用户出现过载。- free 命令用于查看系统内存使用情况。| awk '/Mem/{printf("%.2f"), $3/$2*100}' 表示将 free 命令的输出通过管道传递给 awk 命令,查找含有 Mem 的行,并计算内存使用率。$3/$2*100 表示计算已用内存占总内存的百分比,并输出到变量 mem_usage 中。

  • top -bn1 命令用于查看当前 CPU 使用情况。| awk '/Cpu/{printf("%.2f"), $2}' 表示将 top 命令的输出通过管道传递给 awk 命令,查找含有 Cpu 的行,并输出第二个字段(即 CPU 利用率)到变量 cpu_usage 中。
  • if (( $(echo "$mem_usage > 80" | bc -l) )) || (( $(echo "$cpu_usage > 80" | bc -l) )); then 表示如果内存使用率或 CPU 利用率超过80%,则执行下面的命令。
  • echo "$datetime: System is overloaded, please take action" 表示输出一条提示信息,指示系统出现过载,并将日期时间插入到提示信息中。

总的来说,该脚本用于检查系统状态,包括文件夹容量和系统资源利用率等方面,如果出现异常情况,则会提示用户采取相应的行动。文章来源地址https://www.toymoban.com/news/detail-492525.html

到了这里,关于【Linux运维】shell脚本检查服务器内存和CPU利用率的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 服务器的shell脚本

    shell脚本语句可以执行linux的操作语句。 linux相当于网页,shell相当于java。可以解释编写执行逻辑。 shell的开头以:#!bin/sh 定义解析方式,不同的linuxe内核解释方式不同。大多数内核支持sh(bash)方式。 执行sh文件可以有多种方式:             sh a.sh         bash a.sh   

    2024年02月14日
    浏览(53)
  • Shell脚本常用命令及如何通过shell脚本实现服务器上文件的上传和下载

    Shell脚本常用命令 简介 1、什么是shell: Shell 是一个用 C 语言编写的应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 脚本(shell script),是一种为 shell 编写的脚本程序,扩展名为.sh。 2、如何编写shell脚本: 文本编辑器(可以使用

    2024年02月03日
    浏览(71)
  • shell脚本实现删除服务器指定目录下文件方法

    上述脚本中,find 命令用于查找指定目录下4天以前的文件,并将其删除。其中,-type f 表示只查找普通文件,不包括目录和符号链接等其他类型的文件;-mtime +3 表示查找修改时间早于3天前的文件;-delete 表示删除查找到的文件。 脚本中的 $folder_path 可以替换为实际的目录路径

    2023年04月19日
    浏览(63)
  • shell脚本使用(宿主机windows-服务器-centos)--用于使用shell脚本方式控制docker容器

    需求: 我想要使得windows上编写shell脚本,并且在这个shell脚本在linux中也可用 shell脚本在windows上无法直接运行,但是有WSL这个linux子系统的工具 可以使得shell脚本在主机上执行 视频讲解连接 方式1 方式2

    2024年02月07日
    浏览(49)
  • Shell开发实践:服务器的磁盘、CPU、内存的占用监控

    🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论⭐收藏 CPU、内存和磁盘是计算机中重要且相互依赖

    2024年02月10日
    浏览(58)
  • VMware vCenter服务器常用的巡检命令、运维命令和PowerShell脚本

    一、前言 最近整理一些VMware vCenter和Esxi常用的巡检命令和运维命令如下: 二、巡检命令 三、运维命令 运维常用命令: 四、Powershell脚本 以上就是vCenter和ESXi常用的运维与监控命令,可以帮助vSphere管理员管理和监控环境。

    2024年02月11日
    浏览(52)
  • 在SHELL脚本中用curl处理服务器开机、关机、强制关机、重启动作

    思路:利用了一张主控板来获取服务器的开关机状态,开关机其实是给服务器一个500ms~1000ms的脉冲,等同与按了机箱面板的开关机按钮开关。

    2024年02月07日
    浏览(54)
  • 实现判断服务器是否有git并拉取代码的shell脚本

    判断当前服务器是否有git,没有的话使用yum install安装,然后切换至普通用户,创建目录,并且进入新创建的目录,git clone代码

    2024年02月10日
    浏览(56)
  • shell 脚本统计 http 文件服务器下指定目录及其子目录下所有文件的大小

    shell脚本如下: 首先 vi calculate_size.sh 写入下入内容 执行 sh calculate_size.sh http://example.com/some/dir/ 即可统计 http 文件服务器http://example.com/some/dir/ 中 dir 目录及其子目录下所有文件的大小。

    2024年02月15日
    浏览(59)
  • 运维 | 查看 Linux 服务器 IP 地址

    大多数在操作 Linux 系统时,我们经常需要知道服务器的 IP 比便于后续的一系列操作,这时候有快速查看主机 IP 的命令行操作,能够有效的帮助我们 本章节主要记录一些常用查看服务器 IP 的命令,希望对大家有所帮助。 查看 Linux 服务器的 IP 地址的命令大体上有以下几种。

    2024年04月27日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包