当前位置: 首页 > 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
);

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MyBatisPlus实现增删改查
  • 删除矩阵中0所在行 matlab
  • 如何用Streamlit构建病毒式数据科学应用:快速入门指南
  • vue3 开始时间与结束时间比较验证(结束时间需要大于开始时间)
  • 防火墙组网与安全策略实验
  • esp32 usb cdc串口读写
  • 信息打点web篇--详解cdn识别与绕过
  • QT实现自定义带有提示信息的透明环形进度条
  • 基于蓝牙iBeacon定位技术的商场3D楼层导视软件功能详解与实施效益
  • 底软驱动 | Linux字符设备驱动开发基础
  • Vulnhub靶场 | DC系列 - DC2
  • 计算机视觉研究方向初学习,计算机视觉都有什么方向??!到底是干什么的?!
  • Kubelet 认证
  • iOS热门面试题(三)
  • 社交App iOS审核中的4.3问题:深入分析与解决策略
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • Invalidate和postInvalidate的区别
  • LeetCode算法系列_0891_子序列宽度之和
  • Otto开发初探——微服务依赖管理新利器
  • SQL 难点解决:记录的引用
  • Vue2.x学习三:事件处理生命周期钩子
  • 程序员最讨厌的9句话,你可有补充?
  • 聚类分析——Kmeans
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 优秀架构师必须掌握的架构思维
  • RDS-Mysql 物理备份恢复到本地数据库上
  • zabbix3.2监控linux磁盘IO
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 数据库巡检项
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • #mysql 8.0 踩坑日记
  • #pragma multi_compile #pragma shader_feature
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $.ajax()
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (二)斐波那契Fabonacci函数
  • (论文阅读11/100)Fast R-CNN
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (实战篇)如何缓存数据
  • (算法)硬币问题
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (杂交版)植物大战僵尸
  • (转)编辑寄语:因为爱心,所以美丽
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net SqlSugarHelper
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .net流程开发平台的一些难点(1)
  • .Net面试题4
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .so文件(linux系统)
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?