广告位联系
返回顶部
分享到

shell脚本实现一键获取linux内存/cpu/磁盘IO信息

linux shell 来源:互联网 作者:佚名 发布时间:2024-12-10 23:04:32 人浏览
摘要

在日常的Linux 系统维护工作中,快速获取系统的状态信息是非常重要的。特别是在服务器出现问题时,能够一键获取 CPU 使用率、内存使用情况、磁盘 I/O 读写等关键指标,对于诊断问题非常有

在日常的 Linux 系统维护工作中,快速获取系统的状态信息是非常重要的。特别是在服务器出现问题时,能够一键获取 CPU 使用率、内存使用情况、磁盘 I/O 读写等关键指标,对于诊断问题非常有帮助。今天,我们就来编写一个简单却功能强大的 Shell 脚本来获取linux系统CPU、内存、磁盘IO等信息。

了解所需工具

在 Linux 系统中,有许多工具可以帮助我们获取系统的运行状态,比如 top、free、iostat、df、ps 等。这些工具都能提供丰富的信息,但是我们需要从中提取对我们有用的部分。

完整代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

#!/bin/bash

# 获取要监控的本地服务器IP地址

IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'`

echo "IP地址:"$IP

  

# 获取cpu总核数

cpu_num=`grep -c "model name" /proc/cpuinfo`

echo "cpu总核数:"$cpu_num

  

# 1、获取CPU利用率

################################################

#us 用户空间占用CPU百分比

#sy 内核空间占用CPU百分比

#ni 用户进程空间内改变过优先级的进程占用CPU百分比

#id 空闲CPU百分比

#wa 等待输入输出的CPU时间百分比

#hi 硬件中断

#si 软件中断

#################################################

# 获取用户空间占用CPU百分比

cpu_user=`top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"`

echo "用户空间占用CPU百分比:"$cpu_user

  

# 获取内核空间占用CPU百分比

cpu_system=`top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%"`

echo "内核空间占用CPU百分比:"$cpu_system

  

# 获取空闲CPU百分比

cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' | cut -f 1 -d "%"`

echo "空闲CPU百分比:"$cpu_idle

  

# 获取等待输入输出占CPU百分比

cpu_iowait=`top -b -n 1 | grep Cpu | awk '{print $10}' | cut -f 1 -d "%"`

echo "等待输入输出占CPU百分比:"$cpu_iowait

  

#2、获取CPU上下文切换和中断次数

# 获取CPU中断次数

cpu_interrupt=`vmstat -n 1 1 | sed -n 3p | awk '{print $11}'`

echo "CPU中断次数:"$cpu_interrupt

  

# 获取CPU上下文切换次数

cpu_context_switch=`vmstat -n 1 1 | sed -n 3p | awk '{print $12}'`

echo "CPU上下文切换次数:"$cpu_context_switch

  

#3、获取CPU负载信息

# 获取CPU15分钟前到现在的负载平均值

cpu_load_15min=`uptime | awk '{print $11}' | cut -f 1 -d ','`

echo "CPU 15分钟前到现在的负载平均值:"$cpu_load_15min

  

# 获取CPU5分钟前到现在的负载平均值

cpu_load_5min=`uptime | awk '{print $10}' | cut -f 1 -d ','`

echo "CPU 5分钟前到现在的负载平均值:"$cpu_load_5min

  

# 获取CPU1分钟前到现在的负载平均值

cpu_load_1min=`uptime | awk '{print $9}' | cut -f 1 -d ','`

echo "CPU 1分钟前到现在的负载平均值:"$cpu_load_1min

  

# 获取任务队列(就绪状态等待的进程数)

cpu_task_length=`vmstat -n 1 1 | sed -n 3p | awk '{print $1}'`

echo "CPU任务队列长度:"$cpu_task_length

  

#4、获取内存信息

# 获取物理内存总量

mem_total=`free | grep Mem | awk '{print $2}'`

echo "物理内存总量:"$mem_total

  

# 获取操作系统已使用内存总量

mem_sys_used=`free | grep Mem | awk '{print $3}'`

echo "已使用内存总量(操作系统):"$mem_sys_used

  

# 获取操作系统未使用内存总量

mem_sys_free=`free | grep Mem | awk '{print $4}'`

echo "剩余内存总量(操作系统):"$mem_sys_free

  

# 获取应用程序已使用的内存总量

mem_user_used=`free | sed -n 3p | awk '{print $3}'`

echo "已使用内存总量(应用程序):"$mem_user_used

  

# 获取应用程序未使用内存总量

mem_user_free=`free | sed -n 3p | awk '{print $4}'`

echo "剩余内存总量(应用程序):"$mem_user_free

  

  

# 获取交换分区总大小

mem_swap_total=`free | grep Swap | awk '{print $2}'`

echo "交换分区总大小:"$mem_swap_total

  

# 获取已使用交换分区大小

mem_swap_used=`free | grep Swap | awk '{print $3}'`

echo "已使用交换分区大小:"$mem_swap_used

  

# 获取剩余交换分区大小

mem_swap_free=`free | grep Swap | awk '{print $4}'`

echo "剩余交换分区大小:"$mem_swap_free

  

 

#5、获取磁盘I/O统计信息

echo "指定设备(/dev/sda)的统计信息"

# 每秒向设备发起的读请求次数

disk_sda_rs=`iostat -kx | grep sda| awk '{print $4}'`

echo "每秒向设备发起的读请求次数:"$disk_sda_rs

  

# 每秒向设备发起的写请求次数

disk_sda_ws=`iostat -kx | grep sda| awk '{print $5}'`

echo "每秒向设备发起的写请求次数:"$disk_sda_ws

  

# 向设备发起的I/O请求队列长度平均值

disk_sda_avgqu_sz=`iostat -kx | grep sda| awk '{print $9}'`

echo "向设备发起的I/O请求队列长度平均值"$disk_sda_avgqu_sz

  

# 每次向设备发起的I/O请求平均时间

disk_sda_await=`iostat -kx | grep sda| awk '{print $10}'`

echo "每次向设备发起的I/O请求平均时间:"$disk_sda_await

  

# 向设备发起的I/O服务时间均值

disk_sda_svctm=`iostat -kx | grep sda| awk '{print $11}'`

echo "向设备发起的I/O服务时间均值:"$disk_sda_svctm

  

# 向设备发起I/O请求的CPU时间百分占比

disk_sda_util=`iostat -kx | grep sda| awk '{print $12}'`

echo "向设备发起I/O请求的CPU时间百分占比:"$disk_sda_util

深度解析:脚本背后的原理

1. 获取 IP 地址

ifconfig 命令用于显示所有网络接口的配置信息。通过 grep 和 awk 等工具,我们可以从中提取出 IP 地址信息。

2. 获取 CPU 总核数

/proc/cpuinfo 文件包含了关于 CPU 的详细信息,其中 model name 字段的数量即为 CPU 总核数。

3. 获取 CPU 使用率

top 命令是一个动态显示系统进程状态的工具,我们可以利用它来获取 CPU 的使用率。通过管道命令 grep、sed 和 awk,我们可以精确地提取出 CPU 使用率的数据。

4. 获取内存使用情况

free 命令用于显示系统自由内存的状态,通过 -m 参数可以获取以 MB 为单位的内存信息。

5. 获取磁盘 I/O 信息

iostat 命令用于报告 CPU 使用情况和磁盘 I/O 统计信息。通过 -d 参数可以获取磁盘设备的详细信息,-x 参数则提供了额外的 I/O 统计信息。

执行结果:


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Linux系统中同时执行多个脚本运行方法
    在数据处理和分析的过程中,Excel 是一种广泛使用的数据存储格式。使用 Python 可以高效地从多个 Excel 文件中提取数据,进行汇总和分析。
  • shell脚本实现一键获取linux内存/cpu/磁盘IO信息

    shell脚本实现一键获取linux内存/cpu/磁盘IO信息
    在日常的Linux 系统维护工作中,快速获取系统的状态信息是非常重要的。特别是在服务器出现问题时,能够一键获取 CPU 使用率、内存使用情
  • 使用Shell实现ini文件的读写的介绍
    自己写小工具需要用到shell读写ini文件,在网上找了很多资料,自己整理的目前使用没问题的代码如下: set代码: 1 2 3 4 5 6 7 8 9 10 11 12 13
  • Bash脚本实现实时监测登录
    背景介绍:在服务器的运维管理中,及时监控系统的登录日志对保障系统的安全至关重要。通过实时监控登录日志,运维人员可以发现潜在
  • Linux sort命令具体使用介绍
    sort是 Linux 中用于对文件或标准输入的文本内容进行排序的命令。它支持按数值、字典序、月份、随机等方式排序,并可以控制排序顺序(升
  • shell set -u 和set +u的具体使用
    shell中 ,set -u之后,使用没有初始化的变量,会导致报错 set -u: 表示该命令之后,当命令使用到未定义过的变量时,脚本直接退出,后续命令
  • 使用curl命令查看服务器端口开放情况的方法

    使用curl命令查看服务器端口开放情况的方法
    1.ssh端口 22 curl -v 10.10.10.205:22 1 2 3 4 5 6 7 8 9 10 11 curl -v 10.10.10.205:22 * Trying 10.10.10.205:22... * Connected to 10.10.10.205 (10.10.10.205) port 22 GET / HTTP/1.1
  • linux命令中的大于号、小于号的作用及代表的意思

    linux命令中的大于号、小于号的作用及代表的意思
    在linux中,大家也许会经常看到 、 、 、、这几个小于号、大于号,那么他们分别代表什么意思呢? 好的我们来实验下先,先创建个 test.t
  • 进程状态ps -ef中的e、f含义讲解

    进程状态ps -ef中的e、f含义讲解
    linux或mac控制台下输入ps -ef | grep 关键字可以查看是否有相应的进程启动信息中包含关键字。如: ps的意思是process status,即进程状态。在控
  • Linux中的grep -v、-e、-E用法小结
    grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计