请编写shell程序,监控Linux下的内存剩余空间和磁盘剩余容量,3秒查一次,将查询到的内存和磁盘剩余空间记录到文档中(后期可以用来排查是否有内存泄漏等问题),当内存小于500M磁盘容量磁盘空间小于5G时报警
时间: 2023-12-24 10:04:26 浏览: 64
以下是一个简单的shell程序,可以实现监控Linux下的内存剩余空间和磁盘剩余容量,并记录到文档中,并在内存和磁盘空间低于阈值时报警:
```shell
#!/bin/bash
while true
do
# 获取内存剩余空间
mem_free=$(free -m | awk '/^Mem:/{print $4}')
# 获取磁盘剩余容量
disk_free=$(df -h | awk '$NF=="/"{printf "%d", $4}')
# 记录到文档中
echo $(date +"%Y-%m-%d %H:%M:%S") mem_free:$mem_free disk_free:$disk_free >> monitor.log
# 判断是否需要报警
if [ $mem_free -lt 500 ] || [ $disk_free -lt 5 ]
then
echo "警告:内存剩余空间不足500M或磁盘剩余容量不足5G!"
fi
# 等待3秒
sleep 3
done
```
你可以将以上代码保存为一个.sh文件,然后在终端中运行。如果想让它在后台一直运行,可以使用nohup命令:
```
nohup ./monitor.sh &
```
这样就可以将输出重定向到nohup.out文件中,并且程序会一直在后台运行,直到手动停止。
相关问题
要求编写一个shell脚本,实现计算机各个性能数据监控的功能,具体监控项目要求如下: 当前系统bash 内存剩余容量 磁盘剩余容量 计算机账户数量 当前登录账户数量 本机已安装的软件包数量
很高兴为您提供帮助!根据您的要求,编写一个 shell 脚本能够监控计算机各个性能数据,以下是该脚本代码:
#!/bin/bash
# 当前系统bash版本信息
echo "当前系统bash版本信息:"
echo $(bash --version)
# 当前系统内存剩余容量
echo "当前系统内存剩余容量:"
echo $(free -m | awk 'NR==2{printf "剩余内存:%sMB,使用率:%s%%\n", $4,$3*100/$2 }' )
# 磁盘剩余容量
echo "当前磁盘剩余容量:"
echo $(df -h | awk '$NF=="/"{printf "磁盘剩余容量:%dGB,使用率:%s\n", $4,$5}')
# 计算机账户数量
echo "计算机账户数量:"
echo $(id -u -n | wc -w)
# 当前登录账户数量
echo "当前登录账户数量:"
echo $(who | wc -l)
# 本机已安装的软件包数量
echo "本机已安装的软件包数量:"
echo $(dpkg -l | grep -c '^ii ')
请注意,此脚本需要以管理员身份运行,以便访问必要的信息。此外,该脚本可在Linux和Mac操作系统上运行,但在Windows上无法正常工作。希望能帮到您!
要求编写一个shell脚本,实现计算机各个性能数据监控的功能具体监控项目要求如下:CPU负载 网卡流量 内存剩余容量 磁盘剩余容量 计算机账户数量 当前登录账户数量 计算机当前开启的进程数量 本机已安装的软件包数量
要编写一个简单的Shell脚本来监控这些系统性能指标,你可以使用各种Linux内置工具,如`top`, `ifstat`, `free`, `df`, `who`, 和 `ps`. 下面是一个基本的bash脚本示例:
```bash
#!/bin/bash
# 监控CPU负载 (平均1分钟内)
cpu_load=$(mpstat 1 1 | awk 'NR==2{print $4+$5}')
# 网络流量 (以字节计)
interface="eth0" # 指定网络接口名,根据实际设备修改
nic_traffic=$(ifstat -i $interface | tail -n 1 | awk '{print $6}')
# 内存剩余容量
mem_used=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
mem_remaining=$((100 - mem_used))
# 磁盘剩余容量
disk_used=$(df / | tail -1 | awk '{print $4}')
disk_remaining=$(df / | tail -1 | awk '{print $5}' | tr '%' '\t')
# 用户账户数量
account_count=$(cat /etc/passwd | wc -W -f='${Package}\n' | wc -l) # 对于Debian/Ubuntu系统
echo "CPU负载: $cpu_load%"
echo "网卡流量: $nic_traffic bytes/s"
echo "内存剩余: $mem_remaining%"
echo "磁盘剩余: $disk_remaining% ($disk_used used)"
echo "用户账户数: $account_count"
echo "登录用户数: $logins"
echo "进程数: $processes"
echo "已安装软件包数: $installed_packages"
#
阅读全文