• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > shell脚本监控系统负载、CPU和内存使用情况

shell脚本监控系统负载、CPU和内存使用情况

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了负载超过shell脚本,shell脚本监控cpu,shell脚本监控,shell脚本,shell脚本编程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

在没有nagios监控软件的情况下,只要服务器能上互联网,就可通过发邮件的方式来提醒管理员系统负载与CPU占用的使用情况。

一、安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具)

 1、下载安装:
 http://downloads.sourceforge.net/msmtp/msmtp-1.4.16.tar.bz2?modtime=1217206451&big_mirror=0
# tar jxvf msmtp-1.4.16.tar.bz2
# cd msmtp-1.4.16
# ./configure --prefix=/usr/local/msmtp
# make && make install
</div>

 2、创建msmtp配置文件和日志文件(host为邮件域名,邮件用户名fuquanjun,密码fuquanjun)

# vim /root/.msmtprc

account default 
host xxxxx.com 
from fuquanjun@xxxx.com 
auth login 
user fuquanjun
password fuquanjun
logfile ~/.msmtp.log
 # chmod 600  /root/.msmtprc
 # touch ~/.msmtp.log
</div>

3、mutt安装配置:(一般linux下有默认安装mutt)

如果没有安装,则使用yum安装

yum -y install mutt
# vim /root/.muttrc
set sendmail="/usr/local/msmtp/bin/msmtp"
set use_from=yes
set realname="moniter"  
set from=fuquanjun@xxx.com 
set envelope_from=yes
set rfc2047_parameters=yes
set charset="utf-8
</div>

4、邮件发送测试(-s邮件标题,-a表加附件)
 # echo "邮件内容123456" | mutt -s "邮件标题测试邮件" -a /scripts/test.txt  fuquanjun@xxxx.com
</div>
出现下面报错信息:
msmtp: account default not found: no configuration file available
</div>

发送信件出错,子进程已退出 78 ()。
无法发送此信件。
解决方法:

单独使用msmtp发送测试:/usr/local/msmtp/bin/msmtp -S  发现是配置文件没找到
msmtp: account default not found: no configuration file available
</div>
查看当前的配置文件路径:/usr/local/msmtp/bin/msmtp -P
ignoring system configuration file/work/target/etc/msmtprc: No such file or directory
ignoring user configuration file /root/.msmtprc: No such file ordirectory
falling back to default account
msmtp: account default not found: no configuration file available
</div>
故将/usr/local/etc/msmtprc  复制为/root/.msmtprc
查看一下mutt文件安装目录情况
rpm -ql mutt
</div>
故将/etc/Muttrc  复制为/root/.muttrc即可发送邮件。

二、监控服务器系统负载情况:

1、用uptime命令查看当前负载情况(1分钟,5分钟,15分钟平均负载情况)在苹果公司的Mac电脑上也适用

# uptime
   15:43:59 up 186 days, 20:04,  1 user,  load average:  0.01,    0.02,   0.00
</div>
"load average"意思分别是1分钟、5分钟、15分钟内系统的平均负荷。
(1) 主要观察"15分钟系统负荷",将它作为电脑正常运行的指标。
(2) 如果15分钟内,(系统负荷除以CPU核心数目之后的)平均负荷大于1.0,表明问题持续存在,不是暂时现象。
(3) 当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。
(4) 当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。
(5) 当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。
假设你的电脑只有1个CPU。如果你的电脑装了2个CPU,意味着电脑的处理能力翻了一倍,能够同时处理的进程数量也翻了一倍。
2个CPU表明系统负荷可以达到2.0,此时每个CPU都达到100%的工作量。推广开来,n个CPU的电脑,可接受的系统负荷最大为n.0。

2、查看服务器cpu的总核数
 # grep -c 'model name' /proc/cpuinfo  或者       cat /proc/cpuinfo
</div>
3、截取服务器1分钟、5分钟、15分钟的负载情况
# uptime | awk '{print $8,$9,$10,$11,$12}'
   load average:  0.01,    0.02,   0.00
</div>

4、查看截取15分钟的平均负载

# uptime | awk '{print $12}' (用 '{print $12}' 这个获取的不够准确,如果都用awk取第12个字段的话,结果有可能为空了。而用$NF表输出最后一段的内容)
# uptime | awk '{print $NF}'
</div>
5、编写系统负载监控的脚本文件:
# vim /scripts/load-check.sh
[code]
#!/bin/bash 
#使用uptime命令监控linux系统负载变化 
 
#取系统当前时间(以追加的方式写入文件>>) 
date >> /scripts/datetime-load.txt    
 
#提取服务器1分钟、5分钟、15分钟的负载情况 
uptime | awk '{print $8,$9,$10,$11,$12}' >> /scripts/load.txt 
 
#逐行连接上面的时间和负载相关行数据(每次重新写入文件>) 
paste  /scripts/datetime-load.txt /scripts/load.txt   > /scripts/load_day.txt
# chmod a+x /scripts/load-check.sh
</div>

6、编写系统负载结果文件邮件发送脚本:

您可能想查找下面的文章:

  • shell脚本监控系统负载、CPU和内存使用情况
  • Shell脚本实现把进程负载均衡到多核CPU中

相关文章

  • awk命令、awk编程语言详细介绍和实例
  • Linux rpm命令参数使用大全(经典)
  • Shell正则表达式之grep、sed、awk实操笔记
  • bash scp command not found的解决方法
  • linux shell发送Email邮件的方法详解
  • 一天一个shell命令 linux文本操作系列-diff命令详解
  • Linux运维常用命令
  • ubuntu与centos中更换ip的shell代码
  • shell脚本实现拷贝大文件显示百分比的代码分享
  • Log4j 日志文件Linux/Mac/Windows通用存放位置设置方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Shell脚本实现批量替换文件内容
    • Bash Shell中的select命令简单使用示例
    • 分享一个入门级可控多线程shell脚本代码
    • Linux中多命令执行';'和'&&'的区别解释
    • Linux下实现SNMP一键安装的Shell脚本
    • shell的比较运算介绍
    • Shell编程 Bash引号的那点事
    • shell(bash)下“time” 命令的输出详解
    • linux修改目录和文件权限的简单命令解释
    • Shell 函数参数

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有