shell获取系统运行状态、软硬件信息

01月25日 收藏 0 评论 1 测试开发

shell获取系统运行状态、软硬件信息

转载声明:文章来源https://blog.csdn.net/zhi387/article/details/47835573

主要内容:使用shell scripts 获取系统运行状态、软硬件信息(cpu负载、内存使用率、swap使用率、io速率、网络流量、软件包版本)。

1、shell脚本

$ cat sysstat.sh
#!/bin/bash
#
#使用shell scripts 获取系统运行状态、软硬件信息(cpu负载、内存使用率、swap使用率、io速率、硬盘空间、网络流量、软件包版本)。
#
#cpu负载
cpuload=(`cat /proc/loadavg | awk '{print $1,$2,$3}'`)
#内存使用
mem_usage=(`awk '/MemTotal/{total=$2}/MemFree/{free=$2}/Buffers/{buffers=$2}/^Cached/{cached=$2}END{print (total-free-buffers-cached)/1024}' /proc/meminfo`)
#swap使用
swap_usage=`awk '/SwapTotal/{total=$2}/SwapFree/{free=$2}END{print (total-free)/1024}' /proc/meminfo`
#io
io=(`awk '/pgpgin/{pgin=$2}/pgpgout/{pgout=$2}END{print pgin,pgout}' /proc/vmstat`)
#硬盘空间
df_usage=`df |awk '{print "\t"$1"\t"$5"\t"$2}'`
#网络流量
traffic_be=(`awk 'BEGIN{ORS=" "}/enp2s0/{print $2,$10}' /proc/net/dev`)
echo "testing eth , please wait , 10s"
sleep 10
traffic_af=(`awk 'BEGIN{ORS=" "}/enp2s0/{print $2,$10}' /proc/net/dev`)
netin=$(( (${traffic_af[0]}-${traffic_be[0]})/8/5 ))
netout=$(( (${traffic_af[1]}-${traffic_be[1]})/8/5 ))
#软件信息
package=`rpm -qa`
#输出信息
(echo -e "cpu_load[1,5,15]: ${cpuload[0]}\t${cpuload[1]}\t${cpuload[2]}"
echo "mem_usage:${mem_usage}"
echo "swap_usage: ${swap_usage}"
echo -e "ioin:${io[0]}\tioout:${io[1]}"
echo "df_usage:${df_usage}"
echo -e "netin:${netin}\tnetout:${netout}"
echo -e "package:\n$package")>sysstat.log

运行结果:

$ cat sysstat.log
1
cpu_load[1,5,15]: 0.00 0.01 0.05
mem_usage:421.629
swap_usage: 0
ioin:228816 ioout:5452386
df_usage: Filesystem Use% 1K-blocks
/dev/mapper/centos-root 14% 52403200
devtmpfs 0% 914912
tmpfs 0% 924668
tmpfs 1% 924668
tmpfs 0% 924668
/dev/mapper/centos-home 1% 257336560
/dev/sda1 25% 508588
netin:588 netout:3
package:
lvm2-2.02.115-3.el7.x86_64
filesystem-3.2-18.el7.x86_64
tuned-2.4.1-1.el7.noarch
linux-firmware-20140911-0.1.git365e80c.el7.noarch
openssh-server-6.6.1p1-11.el7.x86_64
glibc-2.17-78.el7.x86_64
selinux-policy-targeted-3.13.1-23.el7.noarch
……

2、/proc/目录

N pid为N的进程
acpi 电源管理
asound 声卡
buddyinfo 内存可用块
bus 总线
cgroups 系统支持的cgroup子系统
cmdline 启动时传递给kernel的参数信息
consoles 控制台
cpuinfo cpu的信息
crypto 内核使用的所有已安装的加密密码及细节
devices 已经加载的设备并分类
diskstats 取得磁盘信息
dma 已注册使用的ISA DMA频道列表
driver 驱动信息
execdomains Linux内核当前支持的execution domains
fb 帧缓冲设备列表,包括数量和控制它的驱动
filesystems 内核当前支持的文件系统类型
fs 文件系统信息
interrupts x86架构中的每个IRQ中断数
iomem 每个物理设备当前在系统内存中的映射
ioports 一个设备的输入输出所使用的注册端口范围
irq 中断请求设备信息
kallsyms 内核符号表
kcore 代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb
keys
key-users
kmsg 记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理
kpagecount
kpageflags
loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关
locks 内核锁住的文件列表
mdstat 多硬盘,RAID配置信息(md=multiple disks)
meminfo RAM使用的相关信息
misc 其他的主要设备(设备号为10)上注册的驱动
modules 所有加载到内核的模块列表
mounts 系统中使用的所有挂载
mtrr 系统使用的Memory Type Range Registers (MTRRs)
net 网卡设备信息
pagetypeinfo
partitions 分区中的块分配信息
sched_debug
scsi scsi设备信息
self 链接到当前正在运行的进程
slabinfo 系统中所有活动的 slab 缓存信息
softirqs
stat 所有的CPU活动信息
swaps 交换空间的使用情况
sys
sysrq-trigger 使用echo命令来写这个文件的时候,远程root用户可以执行大多数的系统请求关键命令,就好像在本地终端执行一样。要写入这个文件,需要把/proc/sys/kernel/sysrq不能设置为0。这个文件对root也是不可读的
sysvipc
timer_list
timer_stats
tty tty设备信息
uptime 系统已经运行了多久
version Linux内核版本和gcc版本
vmallocinfo
vmstat 虚拟内存统计信息
zoneinfo 显示内存空间的统计信息,对分析虚拟内存行为很有用

C 1条回复 评论
下雨天睡觉

正在研究redis,感谢,太赞了!!!!!

发表于 2022-06-21 22:00:00
0 0