当前位置: 首页 > news >正文

脚本练习-每5分钟执行一次获取当前服务器的基本情况

设计一个shell程序,每5分钟执行一次获取当前服务器的基本情况(内存使用率,CPU负载,I/O,磁盘使用率),保存到120.20.20.20数据库上数据库帐号aaa密码bbb库名test表名host

创建一个名为server_status.sh的Shell脚本并添加以下内容: 

#!/bin/bash# 获取内存使用率
mem_total=$(free -m | awk 'NR==2{print $2}')
mem_used=$(free -m | awk 'NR==2{print $3}')
mem_average=$((mem_used * 100 / mem_total))# 获取CPU负载
load_average1=$(uptime | awk -F ':|+|,' '{print $(NF-4) + 0}')
load_average2=$(uptime | awk -F ':|+|,' '{print $(NF-2) + 0}')
load_average3=$(uptime | awk -F ':|+|,' '{print $NF}')# 获取I/O
io_average=$(iostat -x 1 2 | grep -E '^[a-z]' | awk 'NR==3{print $1 + 0}')# 获取磁盘使用率
disk_usage=$(df -h | awk '$NF=="/"{printf "%s", $5}' | tr -d '%')# 将数据插入数据库
mysql -h120.20.20.20 -uaaa -p'bbb' test -e "INSERT INTO host (ip, mem_usage, load_average1, load_average2, load_average3, io_average, disk_usage) VALUES ('$(hostname)', '$mem_average', '$load_average1', '$load_average2', '$load_average3', '$io_average', '$disk_usage')"
为当前主机创建一个新用户并设置密码(将 your_username 和 your_password 替换为你想要的值):
CREATE USER 'your_username'@'%' IDENTIFIED BY 'your_password';为新用户授予所有数据库的所有权限:
GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%';刷新权限:
FLUSH PRIVILEGES;CREATE DATABASE test;
CREATE TABLE host (id INT AUTO_INCREMENT PRIMARY KEY,ip VARCHAR(15) NOT NULL,mem_usage FLOAT NOT NULL,load_average1 FLOAT NOT NULL,load_average2 FLOAT NOT NULL,load_average3 FLOAT NOT NULL,io_average FLOAT NOT NULL,disk_usage FLOAT NOT NULL,timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
#!/bin/bash# 获取内存使用率
mem_total=$(free -m | awk 'NR==2{print $2}')
mem_used=$(free -m | awk 'NR==2{print $3}')
mem_usage=$(echo "scale=2; $mem_used * 100 / $mem_total" | awk '{printf "%.2f", $0}')
#mem_usage=$(echo "scale=2; $mem_used * 100 / $mem_total" | bc)      需下载bc命令
# 获取CPU负载
load_avg=$(uptime | awk -F'[, ]+' '{print $9, $10, $11}')# 获取I/O使用情况
io_usage=$(iostat -x 1 2 | awk 'NR==3{if ($1 > 100) print 100; else print $1}')# 获取磁盘使用率
disk_usage=$(df -h | awk '$NF=="/"{printf "%.2f", $5}')# 将数据插入数据库
mysql -h120.20.20.20 -uaaa -p'bbb' test -e "INSERT INTO host (mem_usage, cpu_load, io_usage, disk_usage) VALUES ('$mem_usage', '$load_avg', '$io_usage', '$disk_usage')"
CREATE DATABASE test;
CREATE TABLE host (id INT AUTO_INCREMENT PRIMARY KEY,mem_usage FLOAT NOT NULL,cpu_load VARCHAR(20) NOT NULL,io_usage FLOAT NOT NULL,disk_usage FLOAT NOT NULL,timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

使脚本可执行:

chmod +x server_status.sh

接下来,打开Crontab编辑器:

crontab -e

在编辑器中,添加以下行:

*/5 * * * * /path/to/server_status.sh

/path/to/替换为实际脚本所在的目录。保存并退出编辑器。

现在,Cron作业将每5分钟运行一次server_status.sh脚本,并将服务器状态信息插入到远程数据库中。

注意:请确保已在远程数据库(IP:120.20.20.20,用户名:aaa,密码:bbb,数据库名:test)中创建了名为host的表,并具有适当的字段。以下是一个创建表的示例SQL语句:

CREATE TABLE host (id INT AUTO_INCREMENT PRIMARY KEY,mem_usage FLOAT NOT NULL,cpu_load VARCHAR(20) NOT NULL,io_usage FLOAT NOT NULL,disk_usage FLOAT NOT NULL,timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

http://www.lryc.cn/news/399644.html

相关文章:

  • 技术探索之kotlin浅谈
  • 机器学习之常用优化器
  • 机器学习基本概念,Numpy,matplotlib和张量Tensor知识进一步学习
  • 博客前端项目学习day01
  • java Collections.synchronizedCollection方法介绍
  • 力扣每日一题:3011. 判断一个数组是否可以变为有序
  • ubuntu 上vscode +cmake的debug调试配置方法
  • 使用Redis实现签到功能:Java示例解析
  • tableau标靶图,甘特图与瀑布图绘制 - 9
  • 双向链表专题
  • SpringCoud组件
  • 向量的定义和解释
  • IoTDB 集群高效管理:一键启停功能介绍
  • 一个spring boot项目的启动过程分析
  • 智驭未来:人工智能与目标检测的深度交融
  • 01MFC建立单个文件类型——画线
  • 免杀中用到的工具
  • [vite] Pre-transform error: Cannot find package pnpm路径过长导致运行报错
  • Promise总结
  • ROI 接口便捷修改
  • jenkins打包java项目报错Error: Unable to access jarfile tlm-admin.jar
  • SQL Server设置端口:跨平台指南
  • ActiveMQ-CVE-2023-46604
  • TensorBoard ,PIL 和 OpenCV 在深度学习中的应用
  • 【超音速 专利 CN117576413A】基于全连接网络分类模型的AI涂布抓边处理方法及系统
  • iPhone数据恢复篇:iPhone 数据恢复软件有哪些
  • Html5+Css3学习笔记
  • WPF学习(2) -- 样式基础
  • 独家揭秘!五大内网穿透神器,访问你的私有服务
  • Ubuntu 编译和运行ZLMediaKit