最近写了一个脚本,主要是检测当前系统的运行状况。脚本内容如下及附带运行结果:

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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#!/bin/bash
 
# system info report
 
def_colors () {
     # Attributes
     normal= '\033[0m' ; bold= '\033[1m' ; dim= '\033[2m' ; under= '\033[4m'
     italic= '033[3m' ;  notalic= '\033[23m' ; blink= '\033[5m' ;
     reverse= '\033[7m' ; conceal= '\033[8m' ; nobold= '\033[22m' ;
     nounder= '\033[24m' ; noblink= '\033[25m'
 
     # Foreground
     black= '\033[30m' ; red= '\033[31m' ; green= '\033[32m' ; yellow= '\033[33m'
     blue= '\033[34m' ; magenta= '\033[35m' ; cyan= '\033[36m' ; white= '\033[37m'
 
     # Background
     bblack= '\033[40m' ; bred= '\033[41m'
     bgreen= '\033[42m' ; byellow= '\033[43m'
     bblue= '\033[44m' ; bmagenta= '\033[45m'
     bcyan= '\033[46m' ; bwhite= '\033[47m'
}
 
def_colors
 
clear
 
hostname =` cat  /proc/sys/kernel/hostname `
echo
echo  -e  "System Report for $yellow$hostname$normal on `date`"
echo
 
prcessor=` grep  'model name'  /proc/cpuinfo  cut  -d: -f2 |  cut  -c2-`
nisdomain=` cat  /proc/sys/kernel/domainname `
 
cache=` grep  'cache size'  /proc/cpuinfo  awk  '{print $4, $5}' `
bogomips=` grep  'bogomips'  /proc/cpuinfo  awk  '{print $3}' `
vendor=` grep  'vendor_id'  /proc/cpuinfo `
 
echo  -e  "Hostname: $yellow$hostname$normal NIS Domain: $white$nisdomain$normal"
 
if  "`echo $vedner | grep -i intel`"  ]
then
     cpu_color=$blue
elif  "`echo $vender | grep -i amd`"  ]
then
     cpu_color=$green
fi
 
echo  -e  "Processor: $cpu_color$processor$normal"
echo  -e  "Running at $white$bogomips$normal bogomips with $white$cache$normal cache"
echo
 
ostype=` cat  /proc/sys/kernel/ostype `
osrelease=` cat  /proc/sys/kernel/osrelease `
rev=` cat  /proc/sys/kernel/version  awk  '{print $1}' `
da_date=` cat  /proc/sys/kernel/version  cut  -d\  -f2-`
upsec=` awk  '{print $1}'  /proc/uptime `
uptime=` echo  "scale=2;$upsec/86400"  bc `
 
echo  -e  "OS Type: $white${ostype}$normal"
echo  -e  "Kernel:  $white${osrelease}$normal"
echo  -e  "Kernel Compile $white${rev}$normal on $white${da_date}$normal"
echo  -e  "Uptime: $magenta${uptime}$normal days"
 
echo 
echo  -e  "${red}Network Statistics:${normal}"
echo  "-------------------"
iface_list=`ip addr | grep  -A1 -B1  "link/ether" `
 
echo  ${iface_list} | awk  '{
if  (NF == 0) {
   print  "No Network Info" ;
else  {
   num_of_iface = int(NF / 22);
   for  (i = 1; i <= num_of_iface; i++) {
     print $(23*i-21), $(23*i-10), $(23*i-6);
   }
   }
}'
 
echo
echo  -e  "${red}Memory Statistics:${normal}"
echo  "------------------"
 
# statistics the memory info
set  ` grep  MemTotal  /proc/meminfo `
tot_mem=$2; 
tot_mem_unit=$3
 
set  ` grep  MemFree  /proc/meminfo `
free_mem=$2; 
fre_mem_unit=$3
perc_mem_used=$((100-(100*free_mem /tot_mem )))
 
set  ` grep  SwapTotal  /proc/meminfo `
tot_swap=$2; 
tot_swap_unit=$3
 
set  ` grep  SwapFree  /proc/meminfo `
free_swap=$2
free_swap_unit=$3
perc_swap_used=$((100-(100*free_swap /tot_swap )))
 
if  [ $perc_mem_used -lt 80 ]
then
     mem_color=$green
elif  [ $perc_mem_used - ge  80 -a $perc_mem_used -lt 90 ]
then
     mem_color=$yellow
else
     mem_color=$red
fi
 
if  [ $perc_swap_used -lt 80 ]
then
     swap_color=$green
elif  [ $perc_swap_used - ge  80 -a $perc_swap_used -lt 90 ]
then
     swap_color=$yellow
else
     swap_color=$red
fi
 
echo  -e  "Memory:\n-------\nTotal:\t$white${tot_mem}$normal ${tot_mem_unit}\nFree:\t$white${free_mem}$normal ${fre_mem_unit}\nUsed:\t${mem_color}${perc_mem_used}%$normal"
echo
echo  -e "Swap:\n-----\nTotal:\t$white${tot_swap}$normal ${tot_swap_unit}\nFree:\t$white${free_swap}$normal ${free_swap_unit}\
${fre_swap_unit}\nUsed:\t${swap_color}${perc_swap_used}%$normal"
 
echo
 
# statistics the load average info
set  ` cat  /proc/loadavg `
one_min=$1
five_min=$2
fifteen_min=$3
 
echo  -e  "${red}Load Adverage:${normal}"
echo  "---------------"
echo  "1min 5min 15min"
echo  "---- ---- -----"
 
for  ave  in  $one_min $five_min $fifteen_min
do
     int_ave=` echo  $ave |  cut  -d. -f1`
     if  [ $int_ave -lt 1 ]
     then
         echo  -en  "$green$ave$normal "
     elif  [ $int_ave - ge  1 -a $int_ave -lt 5 ]
     then
         echo  -en  "$yellow$ave$normal "
     else
         echo  -en  "$red$ave$normal"
     fi
done
 
echo
 
# statistics the process info
running=0;
sleeping=0;
stopped=0;
zombie=0
for  pid  in  /proc/ [1-9]*
do
     procs=$((procs+1))
     stat=` awk  '{print $3}'  ${pid} /stat `
     case  $stat  in
         R) running=$((running+1))
            ;;
         S) sleeping=$((sleeping+1))
            ;;
         T) stopped=$((stopped+1))
            ;;
         Z) zombie=$((zombie+1))
            ;;
     esac
done
 
echo 
echo  -e  "${red}Process Counting:${normal}"
echo  "-----------------"
echo  -e "$white${procs}$normal \t total\n$white$running$normal \t running\n\
$white${sleeping}$normal \t sleeping\n$white${stopped}$normal \t stopped\n\
$white$zombie$normal \t zombie"
echo


运行结果为:

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
# bash sys_info.sh 
 
System Report  for  master on Thu Oct 15 08:33:02 CST 2015
 
Hostname: master NIS Domain: (none)
Processor: 
Running at 4389.86 bogomips with 3072 KB cache
 
OS Type: Linux
Kernel:  2.6.32-573.3.1.el6.x86_64
Kernel Compile  #1 on SMP Thu Aug 13 22:55:16 UTC 2015
Uptime: .06 days
 
Network Statistics:
-------------------
eth0: 08:00:27:00:00:00 10.11.1.51 /24
eth1: 08:00:27:00:00:01 192.168.56.108 /24
 
Memory Statistics:
------------------
Memory:
-------
Total:  1020176 kB
Free:   499448 kB
Used:   52%
 
Swap:
-----
Total:  1015804 kB
Free:   1015804 kB
Used:   0%
 
Load Adverage:
---------------
1min 5min 15min
---- ---- -----
0.06 0.02 0.00 
 
Process Counting:
-----------------
104     total
0   running
104     sleeping
0   stopped
0   zombie