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

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