文档库 最新最全的文档下载
当前位置:文档库 › 使用Shell脚本对Linux系统和进程资源进行监控

使用Shell脚本对Linux系统和进程资源进行监控

使用Shell脚本对Linux系统和进程资源进行监控
使用Shell脚本对Linux系统和进程资源进行监控

使用Shell脚本对Linux系统和进程资源进行监控

发表于2012-06-26 08:58| 6963次阅读| 来源IBM开发者社区| 1条评论| 作者于东海,宋波,池辰ShellLinux脚本

摘要:Shell语言对于接触Linux的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口。本文我们以Bash做为实例总结了使用Shell对系统和进程资源进行监控的一些内容,希望对您能有帮助。

Shell语言对于接触Linux的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。它没有一般编程语言的“编译- 链接- 运行”过程。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。当然,Shell功能也是很强大的。Shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)三种。shell各有优缺点,Linux操作系统缺省的shell一般是Bourne Again shell,它是Bourne shell的扩展,简称Bash。Bash的命令语法是Bourne shell命令语法的超集,并且在Bourne shell的基础上增加、增强了很多特性。在这里,我们以Bash做为实例总结了使用Shell对系统和进程资源进行监控的一些内容,希望对您能有帮助。

检查进程是否存在

在对进程进行监控时,我们一般需要得到该进程的ID,进程ID是进程的唯一标识,但是有时可能在服务器上不同用户下运行着多个相同进程名的进程,下面的函数GetPID给出了获取指定用户下指定进程名的进程ID功能(目前只考虑这个用户下启动一个此进程名的进程),它有两个参数为用户名和进程名,它首先使用ps查找进程信息,同时通过grep过滤出需要的进程,最后通过sed和awk查找需要进程的ID值(此函数可根据实际情况修改,比如需要过滤其它信息等)。

清单1.对进程进行监控

1function GetPID #User #Name

2

3{

4

5PsUser=$1

6

7PsName=$2

8

9pid=`ps -u $PsUser|grep $PsName|grep -v grep|grep -v vi|grep -v dbx\n 10

11|grep -v tail|grep -v start|grep -v stop |sed -n 1p |awk '{print $1}'`

12

13echo $pid

14

15}

16

示例演示:

1)源程序(例如查找用户为root,进程名为CFTestApp的进程ID)

17PID=`GetPID root CFTestApp`

18

19echo $PID

2)结果输出

2011426

21

22[dyu@xilinuxbldsrv shell]$

3)结果分析

从上面的输出可见:11426为root用户下的CFTestApp程序的进程ID。

4)命令介绍

1.ps:查看系统中瞬间进程信息。

参数:-u<用户识别码>列出属于该用户的程序的状况,也可使用用户名称来指定。

-p<进程识别码>指定进程识别码,并列出该进程的状况。

-o指定输出格式

2.grep:用于查找文件中符合字符串的当前行。

参数:-v反向选择,亦即显示出没有‘搜寻字符串’内容的那一行。

3.sed:一个非交互性文本编辑器,它编辑文件或标准输入导出的文件,一次只能处理一行内容。

参数:-n读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。

p标志打印匹配行

4.awk:一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自

定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式:它逐行扫描文件,从第

一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作。如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如果没有指定模式,则所有被操作所指定的行都被处理。

参数:-F fs or –field-separator fs:指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。

有时有可能进程没有启动,下面的功能是检查进程ID是否存在,如果此进程没有运行输出:

23The process does not exist.

24# 检查进程是否存在

25if [ "-$PID" == "-" ]

26then

27{

28echo "The process does not exist."

29}

30fi

检测进程CPU利用率

在对应用服务进行维护时,我们经常遇到由于CPU过高导致业务阻塞,造成业务中断的情况。CPU过高可能由于业务量过负荷或者出现死循环等异常情况,通过脚本对业务进程CPU 进行时时监控,可以在CPU利用率异常时及时通知维护人员,便于维护人员及时分析,定位,以及避免业务中断等。下面的函数可获得指定进程ID的进程CPU利用率。它有一个参数为进程ID,它首先使用ps查找进程信息,同时通过grep -v过滤掉%CPU行,最后通过awk查找CPU利用百分比的整数部分(如果系统中有多个CPU,CPU利用率可以超过100%)。

清单2.对业务进程CPU进行实时监控

31function GetCpu

32

33{

35CpuValue=`ps -p $1 -o pcpu |grep -v CPU | awk '{print $1}' | awk - F. '{print $1}'` 36

37echo $CpuValue

38

39}

下面的功能是通过上面的函数GetCpu获得此进程的CPU利用率,然后通过条件语句判断CPU利用率是否超过限制,如果超过80%(可以根据实际情况进行调整),则输出告警,否则输出正常信息。

清单3.判断CPU利用率是否超过限制

40function CheckCpu

41

42{

43

44PID=$1

45

46cpu=`GetCpu $PID`

47

48if [ $cpu -gt 80 ]

49

50then

51

52{

53

54echo “The usage of cpu is larger than 80%”

55

56}

57

58else

59

60{

61

62echo “The usage of cpu is normal”

63

65

66fi

67

68}

示例演示:

1)源程序(假设上面已经查询出CFT estApp的进程ID为11426)

69CheckCpu 11426

2)结果输出

70The usage of cpu is 75

71

72The usage of cpu is normal

73

74[dyu@xilinuxbldsrv shell]$

3)结果分析

从上面的输出可见:CFTestApp程序当前的CPU使用为75%,是正常的,没有超过80%的告警限制。

检测进程内存使用量

在对应用服务进行维护时,也经常遇到由于内存使用过大导致进程崩溃,造成业务中断的情况(例如32位程序可寻址的最大内存空间为4G,如果超出将申请内存失败,同时物理内存也是有限的)。内存使用过高可能由于内存泄露,消息堆积等情况,通过脚本对业务进程内存使用量进行时时监控,可以在内存使用量异常时及时发送告警(例如通过短信),便于维护人员及时处理。下面的函数可获得指定进程ID的进程内存使用情况。它有一个参数为进程ID,它首先使用ps查找进程信息,同时通过grep -v过滤掉VSZ行,然后通过除1000取以兆为单位的内存使用量。

清单4.对业务进程内存使用量进行监控

75function GetMem

76

77{

78

79MEMUsage=`ps -o vsz -p $1|grep -v VSZ`

80

81(( MEMUsage /= 1000))

82

83echo $MEMUsage

84

85}

下面的功能是通过上面的函数GetMem获得此进程的内存使用,然后通过条件语句判断内存使用是否超过限制,如果超过1.6G(可以根据实际情况进行调整),则输出告警,否则输出正常信息。

清单5.判断内存使用是否超过限制

86mem=`GetMem $PID`

87

88if [ $mem -gt 1600 ]

89

90then

91

92{

93

94echo “The usage of memory is larger than 1.6G”

95

96}

97

98else

99

100{

101

102echo “The usage of memory is normal”

103

104}

105

106fi

示例演示:

1)源程序(假设上面已经查询出CFT estApp的进程ID为11426)

107mem=`GetMem 11426`

108

109echo "The usage of memory is $mem M"

110

111if [ $mem -gt 1600 ]

112

113then

114

115{

116

117echo "The usage of memory is larger than 1.6G"

118

119}

120

121else

122

123{

124

125echo "The usage of memory is normal"

126

127}

128

129fi

2)结果输出

130The usage of memory is 248 M

131

132The usage of memory is normal

133

134[dyu@xilinuxbldsrv shell]$

3)结果分析

从上面的输出可见:CFTestApp程序当前的内存使用为248M,是正常的,没有超过1.6G 的告警限制。

检测进程句柄使用量

在对应用服务进行维护时,也经常遇到由于句柄使用过量导致业务中断的情况。每个平台对进程的句柄使用都是有限的,例如在Linux平台,我们可以使用ulimit – n 命令(open files (-n) 1024)或者对/etc/security/limits.conf的内容进行查看,得到进程句柄限制。句柄使用过高可能由于负载过高,句柄泄露等情况,通过脚本对业务进程句柄使用量进行时时监控,可以在异常时及时发送告警(例如通过短信),便于维护人员及时处理。下面的函数可获得指定进程ID的进程句柄使用情况。它有一个参数为进程ID,它首先使用ls输出进程句柄信息,然后通过wc -l统计输出句柄个数。

135function GetDes

136

137{

138

139DES=`ls /proc/$1/fd | wc -l`

140

141echo $DES

142

143}

下面功能是通过上面的函数GetDes获得此进程的句柄使用量,然后通过条件语句判断句柄使用是否超过限制,如果超过900(可以根据实际情况进行调整)个,则输出告警,否则输出正常信息。

144des=` GetDes $PID`

145

146if [ $des -gt 900 ]

147

148then

149

150{

151

152echo “The number of des is larger than 900”

153

154}

155

156else

157

158{

159

160echo “The number of des is normal”

161

162}

163

164fi

示例演示:

1)源程序(假设上面查询出CFT estApp的进程ID为11426)

165des=`GetDes 11426`

166

167echo "The number of des is $des"

168

169if [ $des -gt 900 ]

170

171then

172

173{

174

175echo "The number of des is larger than 900"

176

177}

178

179else

180

181{

182

183echo "The number of des is normal"

184

185}

186

187fi

2)结果输出

188The number of des is 528

189

190The number of des is normal

191

192[dyu@xilinuxbldsrv shell]$

3)结果分析

从上面的输出可见:CFTestApp程序当前的句柄使用为528个,是正常的,没有超过900个的告警限制。

4)命令介绍

wc:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

参数:-l统计行数。

-c统计字节数。

-w统计字数。

使用Shell对系统资源进行监控

查看某个TCP或UDP端口是否在监听

端口检测是系统资源检测经常遇到的,特别是在网络通讯情况下,端口状态的检测往往是很

重要的。有时可能进程,CPU,内存等处于正常状态,但是端口处于异常状态,业务也是没有正常运行。下面函数可判断指定端口是否在监听。它有一个参数为待检测端口,它首先使用netstat输出端口占用信息,然后通过grep, awk,wc过滤输出监听TCP端口的个数,第二条语句为输出UDP端口的监听个数,如果TCP与UDP端口监听都为0,返回0,否则返回1.

清单6.端口检测

193function Listening

194

195{

196

197TCPListeningnum=`netstat -an | grep ":$1 " | \n

198

199awk '$1 == "tcp" && $NF == "LISTEN" {print $0}' | wc -l`

200

201UDPListeningnum=`netstat -an|grep ":$1 " \n

202

203|awk '$1 == "udp" && $NF == "0.0.0.0:*" {print $0}' | wc -l`

204

205(( Listeningnum = TCPListeningnum + UDPListeningnum ))

206

207if [ $Listeningnum == 0 ]

208

209then

210

211{

212

213echo "0"

214

215}

216

217else

218

219{

220

221echo "1"

222

223}

224

225fi

226

227}

示例演示:

1)源程序(例如查询8080端口的状态是否在监听)

228isListen=`Listening 8080`

229

230if [ $isListen -eq 1 ]

231

232then

233

234{

235

236echo "The port is listening"

237

238}

239

240else

241

242{

243

244echo "The port is not listening"

245

246}

247

248fi

2)结果输出

249The port is listening

250

251[dyu@xilinuxbldsrv shell]$

3)结果分析

从上面的输出可见:这个Linux服务器的8080端口处在监听状态。

4)命令介绍

netstat:用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

参数:-a显示所有连线中的Socket。

-n直接使用IP地址,而不通过域名服务器。

下面的功能也是检测某个TCP或者UDP端口是否处在正常状态。

252tcp: netstat -an|egrep $1 |awk '$6 == "LISTEN" && $1 == "tcp" {print $0}'

253

254udp: netstat -an|egrep $1 |awk '$1 == "udp" && $5 == "0.0.0.0:*" {print $0}'

命令介绍

egrep:在文件内查找指定的字符串。egrep执行效果如rep -E,使用的语法及参数可参照grep指令,与grep不同点在于解读字符串的方法,egrep是用扩展的正则表达式语法来解读,而grep则用基本的正则表达式语法,扩展的正则表达式比基本的正则表达式有更完整的表达规范。

查看某个进程名正在运行的个数

有时我们可能需要得到服务器上某个进程的启动个数,下面的功能是检测某个进程正在运行的个数,例如进程名为CFTestApp。

255Runnum=`ps -ef | grep -v vi | grep -v tail | grep "[ /]CFTestApp" | grep -v grep | wc -l 检测系统CPU负载

在对服务器进行维护时,有时也遇到由于系统CPU(利用率)负载过量导致业务中断的情况。服务器上可能运行多个进程,查看单个进程的CPU都是正常的,但是整个系统的CPU 负载可能是异常的。通过脚本对系统CPU负载进行时时监控,可以在异常时及时发送告警,便于维护人员及时处理,预防事故发生。下面的函数可以检测系统CPU使用情况 . 使用vmstat取5次系统CPU的idle值,取平均值,然后通过与100取差得到当前CPU的实际占用值。

256function GetSysCPU

257

258{

259

260CpuIdle=`vmstat 1 5 |sed -n '3,$p' \n

261

262|awk '{x x = x + $15} END {print x/5}' |awk -F. '{print $1}'

263

264CpuNum=`echo "100-$CpuIdle" | bc`

265

266echo $CpuNum

267

268}

示例演示:

1)源程序

269cpu=`GetSysCPU`

270

271echo "The system CPU is $cpu"

272

273if [ $cpu -gt 90 ]

274

275then

276

277{

278

279echo "The usage of system cpu is larger than 90%"

280

281}

282

283else

284

285{

286

287echo "The usage of system cpu is normal"

288

289}

290

291fi

2)结果输出

292The system CPU is 87

293

294The usage of system cpu is normal

295

296[dyu@xilinuxbldsrv shell]$

3)结果分析

从上面的输出可见:当前Linux服务器系统CPU利用率为87%,是正常的,没有超过90%的告警限制。

4)命令介绍

vmstat:Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。

参数:-n表示在周期性循环输出时,输出的头部信息仅显示一次。

检测系统磁盘空间

系统磁盘空间检测是系统资源检测的重要部分,在系统维护维护中,我们经常需要查看服务器磁盘空间使用情况。因为有些业务要时时写话单,日志,或者临时文件等,如果磁盘空间用尽,也可能会导致业务中断,下面的函数可以检测当前系统磁盘空间中某个目录的磁盘空间使用情况。输入参数为需要检测的目录名,使用df输出系统磁盘空间使用信息,然后通过grep和awk过滤得到某个目录的磁盘空间使用百分比。

297function GetDiskSpc

298

299{

300

301if [ $# -ne 1 ]

302

303then

304

305return 1

306

307fi

308

309Folder="$1$"

310

311DiskSpace=`df -k |grep $Folder |awk '{print $5}' |awk -F% '{print $1}'

312

313echo $DiskSpace

314

315}

示例演示:

1)源程序(检测目录为/boot)

316Folder="/boot"

317

318DiskSpace=`GetDiskSpc $Folder`

319

320echo "The system $Folder disk space is $DiskSpace%"

321

322if [ $DiskSpace -gt 90 ]

323

324then

325

326{

327

328echo "The usage of system disk($Folder) is larger than 90%"

329

330}

331

332else

333

334{

335

336echo "The usage of system disk($Folder) is normal"

337

338}

339

340fi

2)结果输出

341The system /boot disk space is 14%

342

343The usage of system disk(/boot) is normal

344

345[dyu@xilinuxbldsrv shell]$

3)结果分析

从上面的输出可见:当前此Linux服务器系统上/boot 目录的磁盘空间已经使用了14%,是正常的,没有超过使用90% 的告警限制。

4)命令介绍

df:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

参数:-k以k字节为单位显示。

总结

在Linux平台下,shell脚本监控是一个非常简单,方便,有效的对服务器,进程进行监控的方法,对系统开发以及进程维护人员非常有帮助。它不仅可以对上面的信息进行监控,发送告警,同时也可以监控进程的日志等等的信息,希望本文对大家有帮助。

shell脚本之cpu监控

使用的VMware下的redhat6.3系统虚拟机 程序如下: #!/bin/bash while true do cpu_idle=`vmstat |awk 'NR==3 { print $0 }' |awk '{ printf $(NF-2) }'` if [ $cpu_idle -lt 20 ] then echo "Warning,CPU is going to reach the limit." |mail -s "CPU warning" root@localhost else : fi sleep 120 done While是死循环语句,该脚本在执行时do和done部分会无限执行 (1)vmstat命令可以查看CPU、内存、swap分区等等使用情况。如图: 这里cpu下的id(即idle空闲的)代表的是cpu空闲值。cpu使用率达到80,就是说这里的id小于等于20。可以看到目前cpu的空闲率为98. awk是一种文本处理工具 | 叫做管道符(pipe),作用是将前一个命令的输出作为下一个命令的输入 (2)vmstat |awk 'NR==3 { print $0 }' 的意思把vmstat输出的文本流的第三行(NR==3)的所有列过滤并打印出来(print $0),如图: (这就是上一幅图的第三行,因为截图时间不同,数值上有细微的差别很正常) (3)接着在vmstat |awk 'NR==3 { print $0 }' 的基础上进一步进行加工变为 vmstat |awk 'NR==3 { print $0 }' |awk '{ printf $(NF-2) }' 意思是打印出上一幅图那一行文本的倒数第三列(默认间隔符为空格)$NF代表最后一列,$(NF-1)代表倒数第二列,以此类推。由此一来这样的得到结果如图: 也就是目前cpu空闲值为99

性能测试-linux资源监控

目录: Linux硬件基础 CPU:就像人的大脑,主要负责相关事情的判断以及实际处理的机制。 CPU:CPU的性能主要体现在其运行程序的速度上。影响运行速度的性能指标包括CPU的工作频率、Cache容量、指令系统和逻辑结构等参数。 查询指令:cat /proc/cpuinfo 内存:大脑中的记忆区块,将皮肤、眼睛等所收集到的信息记录起来的地方,以供CPU 进行判断。 内存:影响内存的性能主要是内存主频、内容容量。 查询指令:cat /proc/meminfo 硬盘:大脑中的记忆区块,将重要的数据记录起来,以便未来再次使用这些数据。 硬盘:容量、转速、平均访问时间、传输速率、缓存。 查询指令:fdisk -l (需要root权限) Linux监控命令 linux性能监控分析命令 vmstat vmstat使用说明 vmstat可以对操作系统的内存信息、进程状态、CPU活动、磁盘等信息进行监控,不足之处是无法对某个进程进行深入分析。 vmstat [-a] [-n] [-S unit] [delay [ count]] -a:显示活跃和非活跃内存 -m:显示slabinfo -n:只在开始时显示一次各字段名称。 -s:显示内存相关统计信息及多种系统活动数量。 delay:刷新时间间隔。如果不指定,只显示一条结果。 count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。-d:显示各个磁盘相关统计信息。 Sar sar是非常强大性能分析命令,通过sar命令可以全面的获取系统的CPU、运行队列、磁盘I/O、交换区、内存、cpu中断、网络等性能数据。 sar 命 令行

Linux常用的系统监控shell脚本

https://www.wendangku.net/doc/4f13693959.html,下面是我常用的几个Linux系统监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助。 1、查看主机网卡流量 1.#!/bin/bash 2. 3.#network 4. 5.#Mike.Xu 6. 7.while : ; do 8. 9.time=’date +%m”-”%d” “%k”:”%M’ 10. 11.day=’date +%m”-”%d’ 12. 13.rx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’ 14. 15.tx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’ 16. 17.sleep 2 18. 19.rx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’ 20. 21.tx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’ 22. 23.rx_result=$[(rx_after-rx_before)/256] 24. 25.tx_result=$[(tx_after-tx_before)/256] 26. 27.echo “$time Now_In_Speed: “$rx_result”kbps Now_OUt_Speed: “$tx_result”kbps” 28. 29.sleep 2 30. 31.done 2、系统状况监控 1.#!/bin/sh 2. 3.#systemstat.sh

这30个Linux系统监控工具,每个系统管理员都应该知道

这30个Linux系统监控工具,每个系统管理员都应该知道 是否需要监控Linux服务器的性能?试试这些内置的命令和附加工具。大多数发行版都附带了大量的Linux监控工具,这些工具提供了可以用来获取系统活动信息的指标。你可以使用这些工具来查找性能问题的可能原因。下面讨论的命令是关于系统分析和调试Linux服务器问题的一些最基本的命令,例如:1、找出系统的瓶颈2、磁盘(存储)瓶颈3、CPU 和内存瓶颈4、网络瓶颈。01top—进程活动监视命令top命令显示Linux进程。它提供了一个运行系统的动态实时视图,即实际的流程活动。默认情况下,它显示在服务器上运行的cpu密集型任务,并每5秒钟更新一次列表。图01:Linux top命令常用热键和top Linux监视工具下面是一些有用的热键:热键使用t显示摘要信息m显示内存信息A对不同系统资源的顶级用户进行排序。能快速识别系统里的性能需求。f进入一个交互式配置屏幕。有助于为特定的任务置顶。o优先进行交互式地选择r发布renice命令。k问题终止命令。z打开或关闭color/mono02vmstat—虚拟内存统计vmstat命令报告有关进程、内存、分页、阻塞IO、陷阱和cpu活动的信息。示例输出:显示内存使用的slab信息获取关于活动/非活动内存页的信息。03w—找出谁在登录,他们在做什么w命令显示当前机器上的用户及其进程的信息。示

例输出:04uptime—Linux系统运行了多长时间可以使用uptime命令查看服务器运行了多长时间。当前时间,系统运行的时间,当前登录的用户数量,以及过去1、5和15分钟的系统负载平均值。输出:1可视为最优荷载值。负载可以从系统切换到系统。对于单个CPU系统,1 - 3和SMP系统6-10的负载值是可以接受的。05ps—显示Linux进程ps命令将报告当前进程的快照。要选择所有进程,请使用A或E 选项:示例输出: ps和top一样,但是提供了更多的信息。显示长格式输出打开额外的全模式(它将显示传递到过程的命令行参数):显示线程(LWP和NLWP)观察进程后的线程在服务器上打印所有进程。想要打印一个进程树?#pstree获取Linux进程的安全信息。打印每一个作为用户Vivek运行的进程。将ps命令以用户定义的格式配置输出。尝试只显示Lighttpd的进程id。或者或者打印PID 55977的名称。10大内存消耗过程。显示10个CPU消耗过程。06free—Linux 服务器内存使用情况free命令显示系统中空闲和使用的物 理和交换内存的总量,以及内核使用的缓冲区。示例输出:07iostat—Montor Linux平均CPU负载和磁盘活动iostat命令报告中央处理单元(CPU)统计数据和设备、分区和网络文件系统(NFS)的输入/输出统计数据。示例输出:08sar –Monitor,收集和报告Linux系统活动sar命令用于收集、报告和保存系统活动信息。要查看网络计数器,请输入:网络计

IT运维之Linux服务器监控方案

IT运维之Linux服务器监控方案 随着Linux应用日益广泛,绝大部分的网络服务器都使用Linux操作系统。为了全面掌握网络服务器的运行状况和趋势,需要对服务器进行全面的监控。 利用Linux发行版搭建一个网络服务器可能对于许多人都是一件很容易的事情,但网络服务器正式上线后,服务器数据流动、连接数、网络流量、系统负荷等各方面都会增加,安全问题也随之而来,再考虑到日志、数据库的重要性,我想无论是哪一位系统管理员,都应该迫不及待地想把服务器上线的前期工作做好吧。 那我们究竟需要做好哪些工作准备呢?之前有看过一篇文章说到系统管理员应该定期完成的九件事情,我分析过后,认为有几件事情是必须得做的。首先是备份,做好定时备份策略,备份所有你认为重要的数据,并且定期检查你的备份是否有效、全面;日志轮换,无论你想用哪种轮换方式,控制日志增长避免驱动器已满是你的目的;做一定的安全措施,如防火墙iptables的访问控制,用denyhosts防止黑客远程暴力破解,mysql远程登录权限等等;最后就是服务器监控,也是我主要想讲述的内容。 对于服务器的硬件资源、性能、带宽、端口、进程、服务等都必须有一个可靠和持续的监测,统计分析每天的各种数据,从而能及时反映出服务器哪里存在性能瓶颈、安全隐患等。另外是要有危机意识,就是了解服务器有可能出现哪些严重的问题,出现这些问题后该如何去迅速处理。比如数据库的数据丢失,日志容量过大,被黑客入侵等等。说到底,预防是关键。 监控,是预防的其中的一项重要工作。这里先说说我需要监控的内容。系统负载、cpu 使用率、内存占用、磁盘空间、网络流量、端口、进程、apache或tomcat的连接数、mysql 的运行状态这些都是我想要监控的东西,但又能做到多少呢,我只能尽力而为了。要了解服务器每时每刻的整体运行状态,单靠几个Linux自带的性能监测命令是很难实现的。所以,利用shell脚本和开源监控工具进行服务器监控成为了我的两个主要的选择。 利用shell脚本监控能够很好把握的监控的内容,时间,警告峰值,以及方便地进行告警通知,自定义监控日志内容等等;而许多开源的监控工具都十分方便和实用,比如有zabbix、cacti、nagios等,而且能够针对不同的监控内容,生成好看的便于观察的曲线图,多数的开源监控工具都比较成熟,至于哪个好用就得用过才知道。由于这些监控工具都有许多热血人士写了安装和使用的文档,我这里就不写进来了。想了解下的朋友也可以到我的博客上走走,在这里我主要是把自己写的一些shell监控脚本分享一下,希望大家能给点意见。 我这里写了四个脚本(performance.sh 性能监控,process.sh 进程监控,network.sh 流量监控,tongji.sh流量分析统计),并使用crontab定时执行脚本进行监控数据的记录,形成每天的监控日志放在如下相应的文件夹,并且超过自己设定的告警值后发邮件通知,如果是腾讯企业邮箱,163邮箱那些有免费短信通知功能的可以尝试一下,收到邮件告警后很快就能收到短信了,十分方便。 性能监控脚本 ############################################################################## #!/bin/bash #监控cpu系统负载 IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` cpu_num=`grep -c 'model name' /proc/cpuinfo`

Unix,Linux 磁盘 IO 性能监控命令

Unix/Linux 磁盘I/O 性能监控命令 磁盘I/O 性能监控指标和调优方法 在介绍磁盘I/O 监控命令前,我们需要了解磁盘I/O 性能监控的指标,以及每个指标的所揭示的磁盘某方面的性能。磁盘I/O 性能监控的指标主要包括: 指标1:每秒I/O 数(IOPS 或tps) 对于磁盘来说,一次磁盘的连续读或者连续写称为一次磁盘I/O, 磁盘的IOPS 就是每秒磁盘连续读次数和连续写次数之和。当传输小块不连续数据时,该指标有重要参考意义。 指标2:吞吐量(Throughput) 指硬盘传输数据流的速度,传输数据为读出数据和写入数据的和。其单位一般为Kbps, MB/s 等。当传输大块不连续数据的数据,该指标有重要参考作用。 指标3:平均I/O 数据尺寸 平均I/O 数据尺寸为吞吐量除以I/O 数目,该指标对揭示磁盘使用模式有重要意义。一般来说,如果平均I/O 数据尺寸小于32K,可认为磁盘使用模式以随机存取为主;如果平均每次I/O 数据尺寸大于 32K,可认为磁盘使用模式以顺序存取为主。 指标4:磁盘活动时间百分比(Utilization) 磁盘处于活动时间的百分比,即磁盘利用率,磁盘在数据传输和处理命令(如寻道)处于活动状态。磁盘利用率与资源争用程度成正比,与性能成反比。也就是说磁盘利用率越高,资源争用就越严重,性能也就越差,响应时间就越长。一般来说,如果磁盘利用率超过70%,应用进程将花费较长的时间等待I/O 完成,因为绝大多数进程在等待过程中将被阻塞或休眠。 指标5:服务时间(Service Time) 指磁盘读或写操作执行的时间,包括寻道,旋转时延,和数据传输等时间。其大小一般和磁盘性能有关,CPU/ 内存的负荷也会对其有影响,请求过多也会间接导致服务时间的增加。如果该值持续超过20ms,一般可考虑会对上层应用产生影响。 指标6:I/O 等待队列长度(Queue Length) 指待处理的I/O 请求的数目,如果I/O 请求压力持续超出磁盘处理能力,该值将增加。如果单块磁盘的队列长度持续超过2,一般认为该磁盘存在I/O 性能问题。需要注意的是,如果该磁盘为磁盘阵列虚拟的逻辑驱动器,需要再将该值除以组成这个逻辑驱动器的实际物理磁盘数目,以获得平均单块硬盘的I/O 等待队列长度。 指标7:等待时间(Wait Time) 指磁盘读或写操作等待执行的时间,即在队列中排队的时间。如果I/O 请求持续超出磁盘处理能力,意味着来不及处理的I/O 请求不得不在队列中等待较长时间。 通过监控以上指标,并将这些指标数值与历史数据,经验数据以及磁盘标称值对比,必要时结合CPU、内存、交换分区的使用状况,不难发现磁盘I/O 潜在或已经出现的问题。但如果避免和解决这些问题呢?这就需要利用到磁盘I/O 性能优化方面的知识和技术。限于本文主题和篇幅,仅列出一些常用的优化方法供读者参考: 1.调整数据布局,尽量将I/O 请求较合理的分配到所有物理磁盘中。 2.对于RAID 磁盘阵列,尽量使应用程序I/O 等于条带尺寸或者为条带尺寸的倍数。并选取合适 的RAID 方式,如RAID10,RAID5。 3.增大磁盘驱动程序的队列深度,但不要超过磁盘的处理能力,否则,部分I/O 请求会因为丢失 而重新发出,这将降低性能。 4.应用缓存技术减少应用存取磁盘的次数,缓存技术可应用在文件系统级别或者应用程序级别。

Linux实时监控系统的实现

Vol.28No.5 M ay 2012 赤峰学院学报(自然科学版)Journal of Chifeng University (Natural Science Edition )第28卷第5期(下) 2012年5月Linux操作系统具有灵活稳定、成本低、实时性、伸缩性能好等特性,非常适于开发嵌入式系统,因此嵌入式Linux系统发展迅速,Linux实时监控系统也得到不断突破和实现.嵌入式系统的优势特性使其渗透到很多领域,为我们的生产发展提供了重要操作手段,同时也推动了计算机网络的安全发展.如今国民经济的各个领域都能找到Linux实时监控系统的影子,大到工业企业生产的实时监测,小到我们常见的环境监测等.Linux实时监控系统的实现方式多种多样,不同的监控系统有不同的监控要求,Linux都能以其强大的功能不断实现.1 Linux 概述及其优点 1.1Linux概述 对于大部分非计算机专业的人士,可能对Linux比较陌生.Linux是一种操作系统,它是UNIX操作系统的一个克隆版本,同时UNIX操作系统又是其成长发展的重要支柱之一.而UNIX则是一个支持多种处理器具有强大功能的操作系统,具备高可靠性、成熟性、开放性、伸缩性等优势,是一种广泛使用的操作系统.Linux把系统中的硬件设备、软件设备、操作系统、各类命令等都设置为拥有各自特色的文件,Linux内核是该系统的关键,它是一个系统软件,主要用于为硬盘提供抽象层、完成多项任务、对文件系统实时控制等.为什么说Linux是UNIX的克隆了?主要是因为Linux内核是由汇编语言以及C语言组成,是一个符合UNIX基本思想的类操作系统.1.2 Linux的优点 目前,Linux在计算机界广为流行,主要因为它具有以下优点:第一,该系统完全免费,用户还可以自由修改其源代码,这对于计算机程序员来说极具诱惑,他们可以根据自己的思维对其修改,同时也促进了Linux的不断完善与壮大.第二,具备兼容性,这使它可以运行较为常见的DOS、Windows程序,使用户可以从Windows转到Linux.第三,Linux支持多用户、多任务基本特点,用户对自己的文件有特殊权利,各用户互不影响,Linux的每个软件都有其特定用途,它可以使多个程序独立运行实现多任务功能.第四,Linux拥有图形、 字符的良好界面,并且类似于Windows,用户可用鼠标进行操作.第五,Linux还有安全性高、功能强大、稳定性好等特色,Linux的网络功能和内核紧密相连使其优于其他的操作系统,另外它还采取了大量的安全、稳定措施.第六,Linux可在多种硬件平台上有效运行,它的高系统性能也是基于多个处理器平台同时工作.此外,由于Linux经常被用于嵌入式操作系统,它还可以在机顶盒、游戏机、移动电话、摄影机等设备上运行.Linux具有成本低、灵活、可设置性等以上所述优点,它被广泛用于各种设置中,不少产品都利用Linux进行驱动以及它的硬件式网络防火墙和路由器功能.2Linux 实时监控系统的介绍及其实现的重要性研究2.1 对Linux实时监控系统的介绍 计算机技术的发展为不仅人们的生活提供了各种便利,还在实时监控系统这一领域做出了重要贡献.实时监控系统包括软实时和硬实时两种类型的系统,它对时序、逻辑要求比较高.实时监控系统的主要目的在于实时监控各种突发事件,及时处理各种中断,这就要求实时监控系统必须有多种中断级别、 多任务等特征.而Linux正是具备了实时监控系统所需的各种要求,被广泛使用与各种实时监控系统中.Linux实时监控系统是利用Linux操作系统确保在一定时间范围内完成实时监控任务的操作系统.比如,Linux嵌入式网络视频监控系统就是一种,并以其方便、信息量大等优势被广泛应用于交通、银行、办公楼等需实时监控的场所.2.2 实现Linux实时监控系统的具体途径 Linux实时监控系统对我国社会生活的各个方面都发挥着重要作用,如何充分利用这种系统实现其应有价值了?这就要求广大研发人员根据实际需要,不断实现各种基于 Linux实时监控系统的实现 王 苹1,王彦2 (1.福州大学阳光学院,福建 福州 350008;2.福建省科学技术信息研究所,福建福州 350001) 摘要:以NUIX 为背景开发的Linux ,是目前相当流行的一种操作系统.Linux 内核具有较高的实时性,随着实时监控具体要求的日益增加,Linux 实时监控系统得到迅速发展,也正是为了满足这些监控需求,大量的实用性监控系统先后出现,并为人们的生产生活提供便利.本文首先介绍了Linux 以及它的优点,然后阐述了Linux 实时监控系统和实现该系统的基本原理,最后分析了基于Linux 的适时监控系统的具体应用和实现. 关键词:Linux ;实时监控系统;实现中图分类号:TP316 文献标识码:A 文章编号:1673-260X (2012)05-0027-02 27--

shell脚本监控磁盘使用率,超过限制自动清理

每星期(周日凌晨3:00)执行/etc/clear.sh内的脚本 003* * 0 /etc/clear.sh 脚本内容: #!/bin/sh SIZE=$(df -Ph | grep '^/dev/mapper' | awk '{print $2}') #/dev/mapper磁盘总容量 USED=$(df -Ph | grep '^/dev/mapper' | awk '{print $3}') #/dev/mapper磁盘已使用 FREE=$(df -Ph | grep '^/dev/mapper' | awk '{print $4}') #/dev/mapper磁盘剩余 rate=$(df -Ph | grep '^/dev/mapper' | awk '{print $5}') #/dev/mapper磁盘使用率 mount=$(df -Ph | grep '^/dev/mapper' | awk '{print $6}') #/dev/mapper挂载路径 timeStamp=$(date -d today +%Y-%m-%d_%H:%M:%S) #日志时间戳 F=`echo $rate | awk -F% '{print $1}'` if [ $F -ge 80 ];then ##记录磁盘使用率超过限制的日志 echo -e "$timeStamp $mount warning:$rate > 80%, 清除数据!" >> /home/jht/logs/clear.log /home/jht/projects/hbase/bin/hbase shell /home/jht/projects/clear.hbase #根据你的实际情况、需要修改 else echo -e "$timeStamp >>>>使用率正常。SIZE:$SIZE----USED:$USED----FREE:$FREE----RATE:$rate" >> /home/jht/logs/clear.log #记录正常日志 fi

如何使用Shell语言对Linux系统资源进行监控

如何使用Shell语言对Linux系统资源进行监控 通常所说的Shell指的是Linux/Unix系统下的Shell脚本语言。它有不同的版本,比如sh, bash, ksh, csh, tcsh,最常用的是Bash。在华迪教育的IT 培训中,有专门涉及到Shell语言对Linux系统资源的监控课程。这里总结出来,供同学们参考。 概述: Shell 语言是一种交互语言,也就是用户输入一条命令,它就运行一条; 也可以用shell的语法结构将多行的命令放到一个文件中,这个文件被称为Shell 脚本。我们可以运行这个Shell脚本从而完成你想要的工作。它是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上 Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。它没有一般编程语言的“编译 - 链接 - 运行”过程。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由 shell 命令组成的程序。Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的 Shell 程序与其他应用程序具有同样的效果。当然,Shell 功能也是很强大的。Shell 有多种类型,其中最常用的几种是 Bourne shell(sh)、C shell(csh)和 Korn shell(ksh)。三种shell 各有优缺点,Linux 操作系统缺省的 shell 一般是 Bourne Again shell,它是 Bourne shell 的扩展,简称 Bash,bash 的命令语法是 Bourne shell 命令语法的超集,并且在 Bourne shell 的基础上增加、增强了很多特性。 检查进程是否存在 在对进程进行监控时,我们一般需要得到该进程的 ID,进程 ID 是进程的唯一标识,但是有时可能在服务器上不同用户下运行着多个相同进程名的进程,下面的函数 GetPID 给出了获取指定用户下指定进程名的进程 ID 功能(目前只考虑这个用户下启动一个此进程名的进程),它有两个参数为用户名和进程名,它首先使用 ps 查找进程信息,同时通过 grep 过滤出需要的进程,最后通过sed 和 awk 查找需要进程的 ID 值(此函数可根据实际情况修改,比如需要过滤其它信息等)。

用 Python 脚本实现对 Linux 服务器的监控

用Python 脚本实现对Linux 服务器的监控 目前Linux 下有一些使用Python 语言编写的Linux 系统监控工具比如inotify-sync(文件系统安全监控软件)、glances(资源监控工具)在实际工作中,Linux 系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的脚本实现对Linux 服务器的监控。本文介绍一下使用Python 脚本实现对Linux 服务器CPU 内存网络的监控脚本的编写。 1评论: 曹江华, 系统管理员, 中科思密达有限公司 2013 年12 月23 日 内容 Python 版本说明 Python 是由Guido van Rossum 开发的、可免费获得的、非常高级的解释型语言。其语法简单易懂,而其面向对象的语义功能强大(但又灵活)。Python 可以广泛使用并具有高度的可移植性。本文Linux 服务器是Ubuntu 12.10, Python 版本是 2.7 。如果是 Python 3.0 版本的语法上有一定的出入。另外这里笔者所说的Python 是 CPython,CPython 是用C 语言实现的Python 解释器,也是官方的并且是最广泛使用的Python 解释器。除了CPython 以外,还有用Java 实现的Jython 和用.NET 实现的IronPython,使Python 方便地和Java 程序、.NET 程序集成。另外还有一些实验性的Python 解释器比如PyPy。CPython 是使用字节码的解释器,任何程序源代码在执行之前先要编译成字节码。它还有和几种其它语言(包括 C 语言)交互的外部函数接口。 回页首工作原理:基于/proc 文件系统 Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新引导内核系统,这是通过/proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the

Linux监控命令全解

1.1 top 1.1.1 命令说明 Top 命令能够实时监控系统的运行状态,并且可以按照cpu、内存和执行时间进行排序 1.1.2 参数说明 命令行启动参数: 用法: top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...] -b : 批次模式运行。通常用作来将top的输出的结果传送给其他程式或储存成文件 -c : 显示执行任务的命令行 -d : 设定延迟时间 -h : 帮助 -H : 显示线程。当这个设定开启时,将显示所有进程产生的线程 -i : 显示空闲的进程 -n : 执行次数。一般与-b搭配使用 -u : 监控指定用户相关进程 -U : 监控指定用户相关进程 -p : 监控指定的进程。当监控多个进程时,进程ID以逗号分隔。这个选项只能在命令行下使用-s : 安全模式操作 -S : 累计时间模式 -v : 显示top版本,然后退出。 -M : 自动显示内存单位(k/M/G) 1.全局命令 回车、空格 : 刷新显示信息 ?、h : 帮助 = : 移除所有任务显示的限制 A : 交替显示模式切换 B : 粗体显示切换

d、s : 更改界面刷新时间间隔 G : 选择其它窗口/栏位组 I : Irix或Solaris模式切换 u、U : 监控指定用户相关进程 k : 结束进程 q : 退出top r : 重新设定进程的nice值 W : 存储当前设定 Z : 改变颜色模板 2.摘要区命令 l : 平均负载及系统运行时间显示开关 m : 内存及交换空间使用率显示开关 t : 当前任务及CPU状态显示开关 1 : 汇总显示CPU状态或分开显示每个CPU状态 1.任务区命令 外观样式 b : 黑体/反色显示高亮的行/列。控制x和y交互命令的显示样式 x : 高亮显示排序的列 y : 高亮显示正在运行的任务 z : 彩色/黑白显示。 显示内容 c : 任务执行的命令行或进程名称 f、o : 增加和移除进程信息栏位及调整进程信息栏位显示顺序 H : 显示线程 S : 时间累计模式 u : 监控指定用户相关进程 任务显示的数量

linux下监控软件

linux 设备/主机性能监测: mrtg----》》》监控流量,cup负载,tcp连接数,磁盘空间等等一般用来做流量监控,配置简单 nagios--->>>> 用来监控主机与服务存活状态,也可以监控负载与磁盘空间等等,带邮件与短信告警,配置稍微复杂点。 cacti----》》》(仙人掌)CPU负载,内存占用,运行进程数,磁盘空间,网卡流量等各种数据信息监测,强大的绘图功能,十分漂亮,插件无数,可监控几乎所有内容,缺点是安装配置复杂,但现在有一键安装盘,方便的很。 MRTG(Multi Router Traffic Grapher,多路由测量绘图工具)----》》》通过适当配置也可以监测CPU负载,WEB页面访问量等性能数据;主要基于SNMP(简单网络管理协议)采集设备的流量数据,并根据这些信息生成包含PNG图片的HTML监测页面,以图形化的方式显示被监测设备的测量数据。 Linux网络流量监测: BandwidthD----》》》是一个轻量级的局域网流量监测套件可以用来跟踪网络中TCP\IP数据通讯的流量,并以带流量图的WEB网页形式显示信息;基于网卡嗅探的模式攻取数据并统计

流量,一般安装在网关服务器上,可以针对不同的IP地址分别计算HTTP、TCP、udp、vpn、p2p等各种协议的流量,适合小型公司 NTOP(Network Top网络流量排名)----》》》是一个功能强大,可灵活扩展的局域网流量实时监测工具,能够自动筛选出流量占用最高的主机,提供直观的流量图形,并可以按不同的时间段,应用层协议等显示详情;可以安装在局域网内的任何一台机器上;本身可提供监听HTTP应用端口的功能,无需依赖于其它WEB服sss务软件(httpd) Linux漏洞监测 nessus----》》》是目前比较流行的网络弱点(漏洞)扫描与分析工具,并随时更新其买点数据库,包括服务器端(nessusD)和用户端(nessusClient)核心的扫描工作和插件扩展由服务器端进行,用户端可以指定扫描策略和目标。服务器端能够限制用户扫描哪些目标网络或主机,并通过密码或密钥的方式对用户进行登录认证 NMAP----》》》端口扫描类网络安全工具,主要扫描内部网络

Linux操作系统监控手册

TurboLinux 监控手册

目录 1 系统维护操作方法 (2) 1.1 系统维护内容 (2) 1.2 系统维护操作方法 (2) 2 查看CPU信息及相关命令 (4) 2.1.1 查看CPU类型,数量 (4) 2.1.2 显示CPU使用情况 (5) 2.2 查看内存信息及相关命令 (6) 2.3 查看进程信息及相关命令 (7) 2.4 查看磁盘使用信息及相关命令 (8) 2.5 文件系统管理及相关命令 (10) 2.6 IO带宽及相关命令 (11) 2.7 其他 (12)

1系统维护操作方法 1.1 系统维护内容 操作系统是否正常运转主要通过系统资源的使用情况来判断。因此,对系统资源的监测是系统管理的关键所在。 系统日常维护主要从以下几个方面着手: 查看cpu使用情况 查看内存使用情况 查看磁盘使用情况 辅助监测项目包括查看进程,IO等 1.2 系统维护操作方法 使用客户端登录到服务器主机,然后执行系统命令进行检查。可以使用Telnet或ssh方式登录。建议使用ssh方式登录服务器,可以使用putty,SecureCRT等工具。 一般设置情况下,系统不允许root用户直接远程登录到服务器,登录时可以使用普通用户,如: oracle。普通用户登录后,可以执行:$ su – 输入root用户密码 # 即可获得root权限。

注意:root用户具有很高的操作权限,执行命令时应特别小心。root用户的误操作有可能造成系统损坏! 执行完检查操作后,应执行两次exit命令退出远程登录状态。最好不要采用直接关闭连接窗口的方式。 # exit $ exit 即可关闭远程连接。

使用Shell脚本对Linux系统和进程资源进行监控

使用Shell脚本对Linux系统和进程资源进行监控 发表于2012-06-26 08:58| 6963次阅读| 来源IBM开发者社区| 1条评论| 作者于东海,宋波,池辰ShellLinux脚本 摘要:Shell语言对于接触Linux的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口。本文我们以Bash做为实例总结了使用Shell对系统和进程资源进行监控的一些内容,希望对您能有帮助。 Shell语言对于接触Linux的人来说都比较熟悉,它是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。实际上Shell是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。它没有一般编程语言的“编译- 链接- 运行”过程。不仅如此,Shell有自己的编程语言用于对命令的编辑,它允许用户编写由shell命令组成的程序。Shell编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。当然,Shell功能也是很强大的。Shell有多种类型,其中最常用的几种是Bourne shell(sh)、C shell(csh)和Korn shell(ksh)三种。shell各有优缺点,Linux操作系统缺省的shell一般是Bourne Again shell,它是Bourne shell的扩展,简称Bash。Bash的命令语法是Bourne shell命令语法的超集,并且在Bourne shell的基础上增加、增强了很多特性。在这里,我们以Bash做为实例总结了使用Shell对系统和进程资源进行监控的一些内容,希望对您能有帮助。 检查进程是否存在 在对进程进行监控时,我们一般需要得到该进程的ID,进程ID是进程的唯一标识,但是有时可能在服务器上不同用户下运行着多个相同进程名的进程,下面的函数GetPID给出了获取指定用户下指定进程名的进程ID功能(目前只考虑这个用户下启动一个此进程名的进程),它有两个参数为用户名和进程名,它首先使用ps查找进程信息,同时通过grep过滤出需要的进程,最后通过sed和awk查找需要进程的ID值(此函数可根据实际情况修改,比如需要过滤其它信息等)。

LINUX系统监控工具

对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作。在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易。基于此原因,我们已编写了最常使用的18个命令行工具列表,这些工具将有助于每个Linux/Unix 系统管理员的工作。这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因。这个命令行工具列表提供了足够的工具,您可以挑选适用于您的监控场景的工具。 1.Top-Linux进程监控 Linux下的Top命令是一个性能监控程序,许多系统管理员常常用它来监控Linux性能,在许多Linux或者类Unix操作系统里都有这个命令。Top命令用于按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果。这条命令显示了CPU的使用率、内存使用率、交换内存使用大小、高速缓存使用大小、缓冲区使用大小,进程PID、所使用命令以及其他。它还可以显示正在运行进程的内存和CPU占用多的情况。对系统管理员来说,top命令式是一个非常有用的,它可用于监控系统并在需要的时候采取正确的处理动作。让我们看看实际中的top命令。 Top命令举例 有关Top命令更多的例子,请阅读 :Linux下12个使用Top命令的例子。 2. VmStat – 虚拟内存统计 Linux 的 VmStat 命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动等的统计信息。缺省情况下, vmstat 命令在 Linux 系统下不可用,你需要安装一个包含了 vmstat 程序的 sysstat 软件包。命令格式的常见用法是: # vmstatprocs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 1 0 0 810420 97380 70628 0 0 115 4 89 79 1 6 90 3 0 更多的 vmstat 例子,请阅读 : 6 Linux 下的 Vmstat 命令实例 3.Lsof-列出打开的文件 在许多Linux或者类Unix系统里都有lsof命令,它常用于以列表的形式显示所有打开的文件和进程。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用这条命令的主要情形之一就是在无法挂载磁盘和显示正在使用或者打开某个文件的错误信息的时候。使用这条命令,你可以很容易地看到正在使用哪个文件。这条命令最常用的格式如下: # lsofCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEinit 1 root cwd DIR 104,2 4096 2 /init 1 root rtd DIR 104,2 4096 2 /init 1 root txt REG 104,2 38652 17710339

Linux运维工程师应该知道的20个系统监控工具

需要监控Linux服务器系统性能吗?尝试下面这些系统内置或附件的工具吧。大多数Linux 发行版本都装备了大量的监控工具。这些工具提供了能用作取得相关信息和系统活动的量度指标。你能使用这些工具发现造成性能问题可能原因。此次讨论到的工具只是分析和调试服务器下面问题时最基本工具中的一部分。 1.找出瓶颈 2.硬盘(存储)瓶颈 3.CPU及内存瓶颈 4.网络瓶颈 #1: top - 进程活动 top提供一个当前运行系统实时动态的视图,也就是正在运行进程。在默认情况下,显示系统中CPU使用率最高的任务,并每5秒钟刷新一次。 图01.Linux top命令 常用热键 t显示摘要信息开关.m显示内存信息开关.A分类显示系统不同资源的使用大户。有助于快速识别系统中资源消耗多的任务。f添加删除所要显示栏位.o调整所要显示栏位的顺序.r调整一个正在运行的进程Nice值.k结束一个正在运行的进程.z彩色/黑白显示开关 相关链接:How do I Find Out Linux CPU Utilization? 译者推荐链接:Linux系统管理员必备工具系列之top(原创) #2:vmstat -系统活动、硬件及系统信息 使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息。 # vmstat 3 输出样例: procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 2540988 522188 5130400 0 0 2 32 4 2 4 1 96 0 0 1 0 0 2540988 522188 5130400 0 0 0 720 1199 665 1 0 99 0 0 0 0 0 2540956 522188 5130400 0 0 0 0 1151 1569 4 1 95 0 0

LINUX下查看CPU使用率的命令

LINUX下查看CPU使用率的命令 1.top 使用权限:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 说明:即时显示process的动态 d :改变显示的更新速度,或是在交谈式指令列( interactiv e command)按s q :没有任何延迟的显示速度,如果使用者是有superuser的权限,则top将会以最高的优先序执行 c :切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S :累积模式,会将己完成或消失的子行程( dea d child process )的CPU time累积起来 s :安全模式,将交谈式指令取消,避免潜在的危机 i :不显示任何闲置(idle)或无用(zombie)的行程 n :更新的次数,完成后将会退出top b :批次档模式,搭配"n"参数一起使用,可以用来将top的结果输出到档案内 范例: 显示更新十次后退出; top -n 10 使用者将不能利用交谈式指令来对行程下命令: top -s

将更新显示二次的结果输入到名称为top.log的档案里: top -n 2 -b < top.log 另附一个命令简介linux traceroutewindows tracert两个命令相当,跟踪网络路由 2.vmstat 正如我们之前讨论的任何系统的性能比较都是基于基线的,并且监控CPU的性能就是以上3点,运行队列、CPU使用率和上下文切换。以下是一些对于CPU很普遍的性能要求: 1.对于每一个CPU来说运行队列不要超过3,例如,如果是双核CPU就不要超过6; 2.如果CPU在满负荷运行,应该符合下列分布, a) User Time:65%~70% b) System Time:30%~35% c) Idle:0%~5% 3. mpstat 对于上下文切换要结合CPU使用率来看,如果CPU使用满足上述分布,大量的上下文切换也是可以接受的。 常用的监视工具有:vmstat, top,dstat和mpstat. # vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu---- r b swpd free buff cache si so bi bo in cs us sy id wa 0 0 104300 16800 95328 72200 0 0 5 26 7 14 4 1 95 0 0 0 104300 16800 95328 72200 0 0 0 24 1021 64 1 1 98 0 0 0 104300 16800 95328 72200 0 0 0 0 1009 59 1 1 98 0 r表示运行队列的大小,

相关文档
相关文档 最新文档