【bash】统计服务器信息脚本

起因

写一个bash脚本统计服务器的机器名、内网IP、CPU使用率、内存使用率、List{GPU使用率、显存}

脚本

#!/bin/bash# 主机名
hostname=$(hostname)
# 内网ip
ip=$(ip addr | grep 'inet ' | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1)
ip=$(echo "$ip"|tr '\n' ',')
ip="${ip%,}"
# cpu使用率
cpu_used=$(top -bn1 | grep Cpu | awk '{print $2+$4}')mem_total=$(free -m | grep -e Mem -e '内存' | awk '{print $2}')
mem_used=$(free -m | grep -e Mem -e '内存' | awk '{print $3}')
mem_rate=$((mem_used*100/mem_total))gpu_info="[]"
if ! command -v nvidia-smi >/dev/null 2>&1; thenecho "command nvidia-smi not exist"
elsegpu_info=""echo "command nvidia-smi exist"total_devices=$(($(nvidia-smi --query-gpu=name --format=csv,noheader | wc -l)-1))for i in `seq 0 $total_devices`; do# 获取 GPU 内存使用情况MEMORY_INFO=$(nvidia-smi --id="$i" --query-gpu=memory.total,memory.used --format=csv,noheader,nounits)# 解析内存信息TOTAL_MEMORY=$(echo "$MEMORY_INFO" | cut -d ',' -f 1)USED_MEMORY=$(echo "$MEMORY_INFO" | cut -d ',' -f 2)# 计算内存使用率MEMORY_USAGE_PERCENT=$(echo "scale=5; $USED_MEMORY / $TOTAL_MEMORY * 100" | bc)MEMORY_USAGE_PERCENT=$(echo "$MEMORY_USAGE_PERCENT" | sed 's/\(\.[0-9]*[1-9]\)0*$/\1/')if [[ ${MEMORY_USAGE_PERCENT:0:1} == "." ]]; thenMEMORY_USAGE_PERCENT="0$MEMORY_USAGE_PERCENT"fi# 构造 JSON 对象json="{\"gpu_idx\":$i,\"total_memory\":$TOTAL_MEMORY,\"used_memory\":$USED_MEMORY,\"memory_rate\":$MEMORY_USAGE_PERCENT}"gpu_info+=",$json"done# 移除开头的逗号gpu_info=$(echo "$gpu_info" | sed 's/^,//')# 添加结束的方括号gpu_info+="]"gpu_info="[$gpu_info"
fiecho "Hostname: $hostname"
echo "IP: $ip"
echo "CPU Usage: $cpu_used%"
echo "Memory Usage: $mem_used MB / $mem_total MB, $mem_rate%"
echo "GPU Info: $gpu_info"

输出示例

command nvidia-smi exist
Hostname: xxx
IP: 192.168.xxx.xxx
CPU Usage: 0.9%
Memory Usage: 16125 MB / 257376 MB, 6%
GPU Info: [{"gpu_idx":0,"total_memory":24564,"used_memory": 16065,"memory_rate":65.4},{"gpu_idx":1,"total_memory":24564,"used_memory": 15900,"memory_rate":64.728},{"gpu_idx":2,"total_memory":24564,"used_memory": 680,"memory_rate":2.768},{"gpu_idx":3,"total_memory":24564,"used_memory": 680,"memory_rate":2.768}]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/15603.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Excel表格在线解密:轻松解密密码,快速恢复数据

忘记了excel表格密码?教你简单两步走:具体步骤如下。首先,在百度搜索中键入“密码帝官网”。其次,点击“立即开始”,在用户中心上传表格文件即可找回密码。这种方法不用下载软件,操作简单易行,适…

【DZ模板】价值288克米设计APP手机版DZ模板 数据本地化+完美使用

模版介绍 【DZ模板】价值288克米设计APP手机版DZ模板 数据本地化完美使用 腾讯官方出品discuz论坛DIY的后台设置,功能齐全,论坛功能不亚于葫芦侠,自定义马甲,自定义认证,自定义广告,完全可以打造出自己想…

元本学堂是什么?杜旭东疑似再翻车!

杜旭东,1956年1月7日出生于中国北京市,毕业于解放军艺术学院,中国内地男演员、国家一级演员! 2023年11月17日晚,杜旭东在其个人社交媒体上发布视频,就其以前给缅北电诈集团的白家成员录制庆生视频一事道歉…

C++11std::bind的简单使用

std::bind用来将可调用对象与其参数一起进行绑定,绑定后的结果可以用std::function(可调用对象包装器)进行保存,并延迟调用到任何我们需要的时候。 通俗来讲,它主要有两大作用: (1&#xff09…

每日一题Cat, Fox and the Lonely Array

文章目录 题名:题意:题解:代码: 题名: Cat, Fox and the Lonely Array 题意: 给定一个数组a,求出最小的k,满足数组每个长度为k的连续子数组元素按位或答案都相等。 题解&#xf…

【AI新时代】拥抱未来,用AI无人直播替代真人直播,解放劳动力,控制成本!

在科技日新月异的新时代,人工智能(AI)的 keJ0277 浪潮正在席卷各行各业,为传统的工作模式带来了前所未有的变革。其中,AI无人直播的兴起,无疑是这场科技革命中的一股强劲力量。它以其独特的优势&#xff0…

【Linux设备驱动】1.字符设备驱动程序框架及相关结构体

目录 程序总体框架模块加载函数模块卸载函数具体操作函数 相关结构体cdev结构体file_oparations结构体 设备号分配设备号注销设备号创建设备文件 程序总体框架 /* 包含相关头文件 */ #include <linux/module.h> #include <linux/fs.h> #include <linux/init.h&…

C# System.Span<T>、ref struct

1. Span<T>的特性 system.span<T>在.net core 2.0版本引入它适用于对连续内存的操作&#xff0c;而不产生新的内存分配&#xff0c;比如数组、字符串、堆外内存类型为ref struct&#xff0c;不能作为参数传递&#xff0c;不能被装箱(不能作为类的字段)&#xff0c…

信号处理技术:现代通信技术的基石

随着信息技术的飞速发展&#xff0c;通信技术的每一次革新都极大地改变了人们的生活方式。而在这背后&#xff0c;信号处理技术作为通信技术的核心&#xff0c;通过深入分析信号特性、提取有用信息、转换信号形式等一系列手段&#xff0c;为现代通信技术的发展提供了强有力的支…

机器学习7大方面,30个硬核数据集。纯干货分享

在刚刚开始学习算法的时候&#xff0c;大家有没有过这种感觉&#xff0c;最最重要的那必须是算法本身&#xff01; 其实在一定程度上忽略了数据的重要性。 而事实上一定是&#xff0c;质量高的数据集可能是最重要的&#xff01; 数据集在机器学习算法项目中具有非常关键的重…

Python读写文件

最近得以空闲&#xff0c;然后继续学习py。 学习一下py中最频繁用到的文件读写的方法。 在py中&#xff0c;操作是通过文件对象【File obj】实现的&#xff0c;通过文件对象可以读写文本文件和一些二进制文件。 1.打开文件 使用Python中的open函数。有8个参数&#xff0c;但…

2024.5.25.python.exercise

# # 导入数据处理的包 # # from pyecharts.charts import Line # # from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts, LabelOpts # # import json # # # # # 打开文件 # # file_us open("美国.txt", "r", encoding&quo…

C++ Primer Plus第十八章复习题

1、使用用大括号括起的初始化列表语法重写下述代码。重写后的代码不应使用数组ar。 class z200 { private:int j;char ch;double z; public:Z200(int jv,char chv&#xff0c;zv) : j(jv), ch (chv), z(zv){} };double x 8.8; std::string s "what a bracing effect ! …

头歌OpenGauss数据库-H.存储过程第1关:创建存储过程

编程要求 数据库中已经存在三个基础表&#xff1a; student ( num integer, name char(20), age integer, level integer, dept char(20) ); course ( id integer, name char(20) ); sel_course ( studentid integer, courseid integer, score integer ); 创建存储过程&#xf…

Vue3/Vite引入EasyPlayer.js播放H265视频错误的问题

一、引入EasyPlayer.js github链接:GitHub - EasyDarwin/EasyPlayer.js: EasyPlayer.js H5播放器 将demo/html目录下的 EasyPlayer-element.min.js、EasyPlayer-lib.min.js、EasyPlayer.wasm、jquery.min.js 复制到vue3工程的public目录下,注意,vue3 vite的index.html文件…

win10配置wsl的深度学习环境

# 1、一步完成wsl&#xff1a;开启虚拟机、linux子系统、并下载ubuntu # 官方文档: https://learn.microsoft.com/zh-cn/windows/wsl/install wsl --install# 2、打开windows terminal&#xff0c;选ubuntu交互环境 # 第一次需要配置用户名和密码 # 接下来正常使用即可# 3、cud…

自然资源-做好用地用海国土空间规划符合性审查

自然资源-做好用地用海国土空间规划符合性审查 为发挥国土空间规划战略引领和刚性管控作用&#xff0c;强化国土空间规划对各专项规划的指导约束作用&#xff0c;依法依规加强自然资源要素保障&#xff0c;做好用地用海用岛国土空间规划符合性审查工作&#xff1a; 一、加快地…

深入了解数据库设计中的规范化与反规范化

目录 零、前言 一、一些基本术语 二、关系模式 2.1. 什么是关系模式 2.2. 示例 三、数据依赖 3.1. 函数依赖 3.1.1. 完全函数依赖 3.1.2. 部分函数依赖 3.1.3. 传递函数依赖 3.2. 多值依赖 3.3. 连接依赖 四、规范化 4.1. 第一范式&#xff08;1NF&#xff09; …

什么是 DNS 转发?

DNS转发是一种网络传输技术&#xff0c;主要用于解决本地DNS服务器无法直接解析某个特定域名的情况。当本地DNS服务器收到一个无法解析的域名请求时&#xff0c;它会将该请求转发给其他可信的DNS服务器&#xff0c;以获取所需的解析结果。这种技术有助于优化网络性能和安全性&a…

【Flutter】有状态组件StatefulWidgetScaffold组件属性

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Flutter学习 &#x1f320; 首发时间&#xff1a;2024年5月26日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 目…