centos8持续监控cpu,内存,磁盘空间,已安装的服务是否启动并自动发送邮件
时间: 2024-05-10 09:16:19 浏览: 134
你可以使用以下工具来实现这个需求:
1. top - 可以监控CPU和内存使用情况。
2. df - 可以监控磁盘空间使用情况。
3. systemctl - 可以检查已安装的服务是否启动。
4. crontab - 可以定时运行脚本。
5. mailx - 可以发送邮件。
你可以编写一个Shell脚本,使用以上工具来监控系统状态,并在需要时发送邮件。然后使用crontab定时运行该脚本即可。
以下是一个示例脚本,你可以根据自己的需要进行修改:
```bash
#!/bin/bash
# 获取当前时间
TIME=$(date "+%Y-%m-%d %H:%M:%S")
# 获取CPU和内存使用情况
CPU_USAGE=$(top -b -n 1 | grep "%Cpu(s)" | awk '{print $2}')
MEM_USAGE=$(free -m | grep Mem | awk '{print $3/$2 * 100.0}')
# 获取磁盘空间使用情况
DISK_USAGE=$(df -h | awk '$NF=="/"{printf "%d", $5}')
# 检查服务是否启动
SERVICE_STATUS=$(systemctl is-active service-name)
# 发送邮件
if [ ${CPU_USAGE%.*} -gt 90 ] || [ ${MEM_USAGE%.*} -gt 90 ] || [ ${DISK_USAGE%} -gt 90 ] || [ ${SERVICE_STATUS} != "active" ]; then
echo "CPU使用率: ${CPU_USAGE}%" > /tmp/system-status.txt
echo "内存使用率: ${MEM_USAGE}%" >> /tmp/system-status.txt
echo "磁盘空间使用率: ${DISK_USAGE}%" >> /tmp/system-status.txt
echo "服务状态: ${SERVICE_STATUS}" >> /tmp/system-status.txt
mailx -s "系统状态报告" your-email@example.com < /tmp/system-status.txt
fi
```
将以上脚本保存为system-monitor.sh,并赋予执行权限:
```bash
chmod +x system-monitor.sh
```
然后使用crontab定时运行该脚本,比如每小时运行一次:
```bash
crontab -e
```
在打开的文件中添加以下内容:
```bash
0 * * * * /path/to/system-monitor.sh
```
保存文件并退出。现在,系统将会每小时检查一次CPU、内存、磁盘空间和服务状态,并在需要时发送邮件到指定邮箱。