以 CentOS 7 为基础写的,有想法的同学可以自行完善或提交PR。

执行结果如下图:

Code China https://codechina.csdn.net/weixin_45919616/sysinfo/

Github  https://github.com/taills/sysinfo

程序查询了以下内容进行展示:

  • 当前用户名
  • 主机名
  • 当前主机时间
  • 内核版本
  • CPU 名称
  • 处理器数量
  • CPU 负载
  • 内存负载
  • 开机时长
  • 当前登录用户数
  • 当前进程数量
  • Nvidia GPU 名称
  • Nvidia 驱动版本
  • Nvidia CUDA 版本
  • Nvidia cuDNN 版本
  • 磁盘空间使用情况
  • 网卡接口名称、MAC、IP地址

使用

下载

#!/bin/bash
#########################################################
# Function :sysinfo for Linux                           #
# Platform :CentOS 7                                    #
# Version  :1.0                                         #
# Date     :2020-10-30                                  #
# Author   :taills                                      #
# Contact  :taills@qq.com                               #
# Github   :https://github.com/taills/sysinfo           #
#########################################################
if [ -n "$1" ] ; thenif [ `id -u` -ne 0 ];thenecho "请使用 root 用户执行该脚本进行安装/卸载操作"exit 1fiif [ "$1" = "install" ] ;thenif [ "$0" = "/usr/local/bin/sysinfo" ] ;thenecho "骚年,已经安装过了! /usr/local/bin/sysinfo 已存在,可直接使用。"exit 0fi/usr/bin/cp $0 /usr/local/bin/sysinfochmod +x /usr/local/bin/sysinfoecho /usr/local/bin/sysinfo >>/etc/profileexit 0fiif [ "$1" = "uninstall" ] ;thenrm -f /usr/local/bin/sysinfosed -i '/^\/usr\/local\/bin\/sysinfo/d' /etc/profileexit 0fiprintf "\n脚本用法:\n\t安装\tsh %s install\n\t卸载\tsh %s uninstall\n\t卸载\tsysinfo uninstall\n\n执行安装操作会把脚本自身复制到 /usr/local/bin/sysinfo ,并添加到 /etc/profile 中\n每次登录即可执行该脚本,也可以执行 sysinfo 命令\n" $0 $0exit 1
fi# 对齐格式
format2c=" %-20s%-20s\n"
format3c=" %-20s%-20s%-20s\n"line1="------------------------------------------------------------------------"
line2="========================================================================"NOW=`date  "+%F %T"`
ME=`whoami`
# 表头 + 分割线
printf "\nHello ${ME},\n\nThe system information of Host [${HOSTNAME}] at ${NOW} is:\n\n${line2}\n${format2c}${line1}\n" " Name" "Value"
# 内核printf "$format2c" "Kernel Version" $(uname -r)# CPU
cat /proc/cpuinfo  |grep 'model name' |sort -u |awk -v F="$format2c" -F ': ' '{printf F,"CPU",$2}'
# processor count
PROCESSOR_COUNT=$(cat /proc/cpuinfo  |grep processor |wc -l)
printf "$format2c" "Processors" "$PROCESSOR_COUNT"#Cpu load
load1=`cat  /proc/loadavg  |  awk  '{print $1}' `
load5=`cat  /proc/loadavg  |  awk  '{print $2}' `
load15=`cat  /proc/loadavg  |  awk  '{print $3}' `printf  "$format2c" "System Load" "$load1, $load5, $load15"#System uptime
uptime=`cat  /proc/uptime  |  cut  -f1 -d.`
upDays=$((uptime /60/60/24 ))
upHours=$((uptime /60/60 %24))
upMins=$((uptime /60 %60))
upSecs=$((uptime%60))
up_lastime=`date  -d  "$(awk -F. '{print $1}' /proc/uptime) second ago"  +"%Y-%m-%d %H:%M:%S" `#Memory Usage
mem_usage=`free  -m |  awk  '/Mem:/{total=$2} /buffers\/cache/ {used=$3} END {printf("%3.2f%%",used/total*100)}' `
swap_usage=`free  -m |  awk  '/Swap/{printf "%.2f%",$3/$2*100}' `printf "$format2c" "Memory Usage" "$mem_usage"
printf "$format2c" "Swap Usage" "$swap_usage"# Uptime
printf  "$format2c" "System Uptime" "$upDays days $upHours hours $upMins min $upSecs sec"#User
users=`users  |  wc  -w`
printf  "$format2c" "Login Users" $users #Processes
processes=`ps  aux |  wc  -l`
printf  "$format2c" "Processes"   $processesif [ -f /usr/bin/nvidia-smi ]; then# Nvidia GPU/usr/bin/nvidia-smi  -q|grep 'Product Name' | awk -v F="$format2c" -F ': ' '{printf F,"GPU Product Name",$2}'# Nvidia Driver/usr/bin/nvidia-smi  -q|grep 'Driver Version' | awk -v F="$format2c" -F ': ' '{printf F,"Driver Version",$2}'# CUDA Version/usr/bin/nvidia-smi  -q|grep 'CUDA Version' | awk -v F="$format2c" -F ': ' '{printf F,"CUDA Version",$2}'
fi# cuDNN
CUDNN_LIB_PATH=/usr/lib64/libcudnn.so
if [ -f "$CUDNN_LIB_PATH" ]; thenreadlink -f $CUDNN_LIB_PATH | awk -F 'libcudnn.so.' -v F="$format2c" '{printf F,"cuDNN Version",$2}'
fiecho
echo $line2
#System fs usage
Filesystem=$( df  -h |  awk  '/^\/dev/{print $6}' )
printf "$format2c"  "Mount Point" "Usage"
echo $line1
for  f  in  $Filesystem
dodf  -h| awk -v A="$format2c" -v B=$f '{if($NF==B) printf A,B,$3" ("$5")"}'
doneecho
echo $line2
#Interfaces
INTERFACES=$(ip -4 ad |  grep  'state '  |  awk  -F ":"  '!/^[0-9]*: ?lo/ {print $2}' )
printf "$format3c" "Interface" "MAC" "IP Address"
echo $line1
for  i  in  $INTERFACES
doMAC=$(ip ad show dev $i |  grep  "link/ether"  |  awk  '{print $2}' ) ip ad show dev $i |  awk -v A="$format3c" -v B="$i" -v C="$MAC" '/inet/{printf A,B,C,$2}'
done

该脚本支持安装到 /usr/local/bin/ 目录下,以便日常使用,安装后会写入 /etc/profile ,在登录时会展示执行结果,实现动态的 /etc/motd 。

安装

sh sysinfo.sh install

卸载

sh sysinfo.sh uninstall

或者

sysinfo uninstall

Bash 实现 Linux 版 sysinfo 获取系统信息相关推荐

  1. ansible获取linux信息,ansible 获取系统信息的一些范例,ansible系统信息

    ansible 获取系统信息的一些范例,ansible系统信息 主机名:echo `ansible 193.168.120.101 -m setup -a "filter=ansible_h ...

  2. linux获取系统信息(sysinfo函数的使用)

    sysinfo结构体 Linux中,可以用sysinfo来获取系统相关信息. Linux中,sysinfo是用来获取系统相关信息的结构体. 函数声明和原型: #include <sys/sysi ...

  3. Linux——获取系统信息

    目录 一.关于时间的概念 二.linux系统中的时间 三.时间相关API实战 五.proc文件系统介绍 六.proc文件系统的使用 一.关于时间的概念 1.GMT时间 (1)GMT是格林尼治时间,也就 ...

  4. 获取系统信息2——linux中使用随机数

    以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 1.随机数和伪随机数 随机数是随机出现,没有任何规律的一组数列. 真正的完全随机的数列是不存在的,只是一种理想情况 ...

  5. 朱有鹏-3.linux应用编程和网络编程-第3部分-3.3.获取系统信息

    3.3.1.关于时间的概念 3.3.1.1.GMT时间 (1)GMT是格林尼治时间,也就是格林尼治地区的当地之间. (2)GMT时间的意义?[用格林尼治的当地时间作为全球国际时间],用以描述全球性的事 ...

  6. 主机大师linux,113资讯网(www.113p.cn)评测:护卫神·主机大师 (Linux版)

    最近护卫神也进入了Linux集合面板市场 说起护卫神,很多人非常的陌生,但是说起"C盘垃圾清理.bat"这个小程序,应该很多人用过! 他就是护卫神出品的,家里第一次配置电脑,我的电 ...

  7. 跨平台 获取系统信息的python库 http://support.hyperic.com/disp

    跨平台 获取系统信息的python库 http://support.hyperic.com/disp - 张沈鹏,在路上... - ITeye技术网站 跨平台 获取系统信息的python库 http: ...

  8. linux 查询内存和核心数,Linux下查看操作系统信息、内存情况及cpu信息:cpu个数、核心数、线程数...

    1.查看物理CPU的个数 [root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc ...

  9. 音乐无界限,听见好时光—网易云音乐Linux版震撼来袭!

    为了带来更好的音乐体验,实现对音乐高品质的追求,经过网易云音乐与深度科技团队长达半年多的联合开发,大家期待已久的网易云音乐正式登陆 Linux 平台! 网易云音乐是一款专注于发现与分享的音乐产品,依托 ...

最新文章

  1. LOJ P10149 凸多边形的划分 题解
  2. iis8.5 php mysql_Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
  3. 【转】_declspec(naked) 使用
  4. hbase 查询_云HBase发布全文索引服务,轻松应对复杂查询
  5. php中取整的函数,php中四舍五入取整函数详细介绍
  6. Redis常用API-使用文档
  7. python怎么创建变量balance_在Python中将变量从一个函数修改为另一个函数
  8. 在CSDN发布付费资源
  9. 立创开源|esp8266三路继电器
  10. SSRS----Report Builder 同时冻结首行和前两列的一种方法
  11. 赵小楼《天道》《遥远的救世主》解读(84)救主文化是什么?
  12. 固态硬盘是什么接口_M.2 SSD固态硬盘的规格、接口、总线详解
  13. Android 短视频SDK
  14. CSS选择器补充,CSS三大特性以及字体、文本样式。
  15. 微信小程序本地缓存在哪里?
  16. 【基础课程】计算机网络
  17. 电脑软件连接ABB机器人控制柜
  18. 【纯净版windows系统】U盘启动制作图文教程
  19. 毕业设计 SSM毕业设计管理系统
  20. 无法连接计算机,超过最大连接数

热门文章

  1. [文献阅读报告][译]: Social-STGCNN:CVPR2020论文翻译以及解读
  2. 打包工具-rollup
  3. Java设计模式——适配器模式【Adapter Pattern】
  4. axure文件如何加密_产品原型 | Axure原型,可以像网盘一样管理
  5. python打印26个字母的四种方法
  6. Stunnel使用2
  7. 如何破解修改Linux操作系统用户密码
  8. pc端欧路词典打开就闪退,解决办法
  9. Ubuntu日记——adb无法启动的解决
  10. HTTP与HTTPS的区别,详细介绍