脚本练习-每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
);
相关文章:
脚本练习-每5分钟执行一次获取当前服务器的基本情况
设计一个shell程序,每5分钟执行一次获取当前服务器的基本情况(内存使用率,CPU负载,I/O,磁盘使用率),保存到120.20.20.20数据库上数据库帐号aaa密码bbb库名test表名host 创建一个名为server_stat…...
技术探索之kotlin浅谈
Kotlin是一种静态类型编程语言,它运行在Java虚拟机(JVM)上,可以与Java代码互操作。Kotlin由JetBrains开发,是一种现代、简洁且安全的编程语言。它在2011年首次亮相,2017年被谷歌宣布为Android官方开发语言。…...
机器学习之常用优化器
机器学习之常用优化器 1、SGD 优化器1.2、 SGD 的优缺点 2、 Adam 优化器2.1、设置 Adam 优化器2.2、使用 Adam 优化器的训练流程2.3、Adam 优化器的优缺点 3. AdamW 优化器3.1、示例3.2、训练过程3.3、AdamW 优化器的优点 1、SGD 优化器 在 PyTorch 中,设置 SGD 优…...
机器学习基本概念,Numpy,matplotlib和张量Tensor知识进一步学习
机器学习一些基本概念: 监督学习 监督学习是机器学习中最常见的形式之一,它涉及到使用带标签的数据集来训练模型。这意味着每条训练数据都包含输入特征和对应的输出标签。目标是让模型学会从输入到输出的映射,这样当给出新的未见过的输入时…...
博客前端项目学习day01
这里写自定义目录标题 登录创建项目配置环境变量,方便使用登录页面验证码登陆表单 在VScode上写前端,采用vue3。 登录 创建项目 检查node版本 node -v 创建一个新的项目 npm init vitelatest blog-front-admin 中间会弹出询问是否要安装包,…...
java Collections.synchronizedCollection方法介绍
Collections.synchronizedCollection 是 Java 中的一个实用方法,用于创建一个线程安全的集合。它通过包装现有的集合对象来实现线程安全,以确保在多线程环境中对集合的访问是安全的。 主要功能 线程安全:通过同步包装现有的集合,使得在多线程环境中对集合的所有访问(包括…...
力扣每日一题:3011. 判断一个数组是否可以变为有序
力扣官网:前往作答!!!! 今日份每日一题: 题目要求: 给你一个下标从 0 开始且全是 正 整数的数组 nums 。 一次 操作 中,如果两个 相邻 元素在二进制下数位为 1 的数目 相同 &…...
ubuntu 上vscode +cmake的debug调试配置方法
在ubuntu配置pcl点云库以及opencv库的时候,需要在CMakeLists.txt中加入相应的代码。配置完成后,无法调试,与在windows上体验vs studio差别有点大。 找了好多调试debug配置方法,最终能用的有几种,但是有一种特别好用&a…...
使用Redis实现签到功能:Java示例解析
使用Redis实现签到功能:Java示例解析 在本博客中,我们将讨论一个使用Redis实现的签到功能的Java示例。该示例包括两个主要方法:sign()和signCount(),分别用于用户签到和计算用户当月的签到次数。 1. 签到方法:sign()…...
tableau标靶图,甘特图与瀑布图绘制 - 9
标靶图,甘特图与瀑布图 1. 标靶图绘制1.1 筛选器筛选日期1.2 条形图绘制1.3 编辑参考线1.4 设置参考线1.5 设置参考区间1.6 四分位设置1.7 其他标靶图结果显示 2.甘特图绘制2.1 选择列属性2.2 选择列属性2.3 创建新字段2.4 设置天数大小及颜色 3. 瀑布图绘制3.1 she…...
双向链表专题
在之前的单链表专题中,了解的单链表的结构是如何实现的,以及学习了如何实现单链表得各个功能。单链表虽然也能实现数据的增、删、查、改等功能,但是要找到尾节点或者是要找到指定位置之前的节点时,还是需要遍历链表,这…...
SpringCoud组件
一、使用SpringCloudAlibaba <dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2023.0.1.0</version><…...
向量的定义和解释
这是一个向量: 向量具有大小(大小)和方向: 线的长度显示其大小,箭头指向方向。 在这里玩一个: 我们可以通过将它们从头到尾连接来添加两个向量: 无论我们添加它们的顺序如何,我们都…...
IoTDB 集群高效管理:一键启停功能介绍
如何快速启动、停止 IoTDB 集群节点的功能详解! 在部署 IoTDB 集群时,对于基础的单机模式,启动过程相对简单,仅需执行 start-standalone 脚本来启动 1 个 ConfigNode 节点和 1 个 DataNode 节点。然而,对于更高级的分布…...
一个spring boot项目的启动过程分析
1、web.xml 定义入口类 <context-param><param-name>contextConfigLocation</param-name><param-value>com.baosight.ApplicationBoot</param-value> </context-param> 2、主入口类: ApplicationBoot,SpringBoot项目的mian函数 SpringBo…...
智驭未来:人工智能与目标检测的深度交融
在科技日新月异的今天,人工智能(AI)如同一股不可阻挡的浪潮,正以前所未有的速度重塑着我们的世界。在众多AI应用领域中,目标检测以其独特的魅力和广泛的应用前景,成为了连接现实与智能世界的桥梁。本文旨在…...
01MFC建立单个文件类型——画线
文章目录 选择模式初始化文件作用解析各初始化文件解析 类导向创建鼠标按键按下抬起操作函数添加一个变量记录起始位置注意事项代码实现效果图 虚实/颜色线 选择模式 初始化文件作用解析 运行: 各初始化文件解析 MFC(Microsoft Foundation Classes&am…...
免杀中用到的工具
🟢 绝大部分无法直接生成免杀木马,开发、测试免杀时会用到。 工具简称 概述 工具来源 下载路径 x64dbg 中文版安装程序(Jan 6 2024).exe 52pojie hellshell 官方的加密或混淆shellcode github Releases ORCA / HellShell GitLab hellshe…...
[vite] Pre-transform error: Cannot find package pnpm路径过长导致运行报错
下了套vue3的代码,执行pnpm install初始化,使用vite启动,启动后访问就会报错 报错信息 ERROR 16:40:53 [vite] Pre-transform error: Cannot find package E:\work\VSCodeProjectWork\jeecg\xxxxxxxxx-next\xxxxxxxxx-next-jeecgBoot-vue3\…...
Promise总结
Promise.then() 的返回值仍然是 Promise 对象 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>D…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
