Shell - 监控某个进程的内存占用情况、主机CPU、磁盘空间等信息以及守护进程

网友投稿 805 2022-05-28

文章目录

脚本

启动的两种方式

方式一 注册到系统Cron

方式二

运行结果

linux内存、cpu、磁盘IO

脚本

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

启动的两种方式

方式一 注册到系统Cron

registMonitor(){ echo "*/5 * * * * sh ${current_path}/MonitorES.sh 95" > /var/spool/cron/root }

1

2

3

这种方式有个缺点,没法停止服务,除非把cron也注释掉。。。

方式二

while循环 比如这个守护

#!/bin/bash logfile=/watch.log touch $logfile while [ 1 -eq 1 ] do AdminProcNum=`ps -ef | grep "org.elasticsearch.bootstrap.Elasticsearch" | grep -v grep | wc -l` echo "--------------------------- $(date "+%Y-%m-%d %H:%M:%S") ElasticsearchProcNum: $AdminProcNum -----------------------------------------" >> ${logfile} 2>&1 if [ $AdminProcNum -lt 1 ] then echo "start" >> /xxx.log su elasticsearch<> ${logfile} 2>&1 fi sleep 60 done

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

运行结果

一天一个文件 ,注意清理

==========================begin 2020-09-28 08:20:01=============================================== total used free shared buff/cache available Mem: 3940 2652 635 6 653 1047 Swap: 2047 829 1218 Memory Usage: 2652/3940MB (67.31%) Disk Usage: 16/18GB (96%) CPU Load: 0.38 CPU Load: 0.10 当前主机内存使用率:67% ES实际使用内存:1302560 主机总内存:4035036 ES内存/总内存:1302560/4035036=32% 当前主机内存使用67 小于阈值 95, Do Nothing ==========================end 2020-09-28 08:20:01================================================= ==========================begin 2020-09-28 08:25:01=============================================== total used free shared buff/cache available Mem: 3940 2651 634 6 653 1047 Swap: 2047 829 1218 Memory Usage: 2651/3940MB (67.28%) Disk Usage: 16/18GB (96%) CPU Load: 0.56 CPU Load: 0.10 当前主机内存使用率:67% ES实际使用内存:1302568 主机总内存:4035036 ES内存/总内存:1302568/4035036=32% 当前主机内存使用67 小于阈值 95, Do Nothing ==========================end 2020-09-28 08:25:01=================================================

1

2

Shell - 监控某个进程的内存占用情况、主机CPU、磁盘空间等信息以及守护进程

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

linux内存、cpu、磁盘IO

#!/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利用率 # 获取用户空间占用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

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

详解

Shell 任务调度

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:[转]Ultra Fractal教程系列07——快速入门教程04——保存分形
下一篇:不给电脑,我用手机敲命令十分钟完成了zabbix监控,面试官当场下offer
相关文章