linux下几个简易的系统监控脚本

公司没有专门的系统管理员,因此一些服务器安全措施也得我们程序员自己去做,对Linux服务器了解不是很多,查了些资料,下面是自己写的几个简易的服务器监控脚本,希望路过的仙人指点指点,进一步修正完善!

1.服务器登陆用户监控,登陆用户超过两个时发邮件通知,使用139邮箱接收,方便短信通知。

Bash代码:

#!/bin/bash

IP=`ifconfig eth0 | grep "inet addr"|awk ‘{print $2}‘|cut -f 2 -d ":"`

users=`uptime|awk ‘{print $6}‘`

#if[$users -ge 2]

if [ $users -ge 2 ]

then

echo "$IP server login users is more than 2"|mail -s "warning:" ****@139.com

fi

2.MySQL运行状态监控,没有正常运行则重新启动服务,重启失败发送邮件通知

Bash代码:

#! /bin/bash

#MySQL running这个字符串根据数据库版本正常运行时status显示的信息确定

/sbin/service mysql status | grep "MySQL running" > /dev/null

if [ $? -eq 0 ]

then

#状态正常检查3306端口是否正常监听

netstat -ntp | grep 3306 > /dev/null

if [ $? -ne 0 ]

then

/sbin/service mysql restart

sleep 3

/sbin/service mysql status | grep " MySQL running" > /dev/null

if [ $? -ne 0 ]

then

echo "mysql service has stoped ,Automatic startup failure, please start it manually!" | mail -s "mysql is not running" ***@139.com

fi

fi

else

/sbin/service mysql start

sleep 2;

/sbin/service mysql status | grep "MySQL running" > /dev/null

if [ $? -ne 0 ]

then

echo "mysql service has stoped ,Automatic startup failure, please start it manually!" | mail -s "mysql is not running" ***@139.com

fi

fi

3.硬盘空间使用状况监控,当有分区空间使用超过80%时,邮件通知

Bash代码:

#!/bin/bash

#set -x

checkLog=/var/log/check-space.log

fullFlag=0

df -h > $checkLog

percent_list=$(cat $checkLog  | awk ‘{print $5}‘ | grep -Eo "[0-9]+")

for num in $percent_list

do

if [ $num -ge 80 ]; then

fullFlag=1

fi

done

if [ $fullFlag -eq 1 ]; then

echo "$(hostname): used disk space is more than 80%"|mail -s "warning:disk space is not enough" ***@139.com

fi

ps:邮件通过配置mail使用外部SMTP服务器发送,这里使用163的SMTP服务器。vi 编辑/etc/mail.rc,在开始部分加入下面的代码,:wq退出保存即可!

Xml代码:

set [email protected]

set smtpsmtp=smtp.163.com

set smtp-auth-user=test

set smtp-auth-password=test123

时间: 2024-08-24 20:15:08

linux下几个简易的系统监控脚本的相关文章

linux下如何查看和修改系统BLOCK的大小

http://blog.163.com/[email protected]/blog/static/162607494201271435333906/ 查看os系统块的大小 [root]# /sbin/tune2fs -l /dev/sda1 查看os系统页的大小 [[email protected] ~]$ getconf PAGESIZE 4096 修改块的大小: 创 建文件系统时,可以指定块的大小.如果将来在你的文件系统中是一些比较大的文件的话,使用较大的块大小将得到较好的性能.将ext2

Linux下一个简单的日志系统的设计及其C代码实现

1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回值及其执行情况.脚本执行及调用情况等.通过阅读日志文件,我们能够较快地跟踪程序流程,并发现程序问题. 因此,熟练掌握日志系统的编写方法并快速地阅读日志文件,是对一个软件开发工程师的基本要求. 本文详细地介绍了Linux下一个简单的日志系统的设计方法,并给出了其C代码实现.本文为相关开发项目Linux

Linux下使用fstatfs/statfs查询系统相关信息

Linux下使用fstatfs/statfs查询系统相关信息 1.   功能 #include < sys/statfs.h > int statfs(const char *path, struct statfs *buf); int fstatfs(int fd, struct statfs *buf); 查询文件系统相关的信息. 2.   參数 path: 须要查询信息的文件系统的文件路径名. fd: 须要查询信息的文件系统的文件描写叙述符. buf:下面结构体的指针变量,用于储存文件系

Linux下模拟一个简易的消息机制

声明 #define MSG_ERROR  -1 #define MSG_SUCCEED 0 #define MSG_TRUE 1 #define MSG_FALSE 0 #define PM_NOREMOVE    0x00 #define PM_REMOVE    0x01 typedef unsigned long  WPARAM; typedef unsigned long  LPARAM; typedef unsigned int UINT; typedef int MSG_BOOL;

Linux下使用VirtualBox安装Windows系统

(文档比较长,只是写的详细,实际操作起来相对简单.) 由于一些特殊原因,我们并不能完全抛下Windows而使用Linux.VirtualBox 是一款虚拟机软件,支持多系统.在Linux下安装 VirtualBox 后,我们就可以安装Windows系统,并使用Windows下的软件了. 1.下载首先需要下载 VirtualBox,下载地址:http://www.virtualbox.org/wiki/Downloads点击 VirtualBox 3.2.8 for Linux hosts,跳转到

Linux下定时备份MySQL数据库的Shell脚本

Linux下定时备份MySQL数据库的Shell脚本 对任何一个已经上线的网站站点来说,数据备份都是必须的.无论版本更新还是服务器迁移,备份数据的重要性不言而喻.人工备份数据的方式不单耗费大量时间和精力,还灰常不专业的说.于是,有了下面这段脚本的出现.参考了网上的很多教程,外加自己的测试,以下脚本经测试可用.#!/bin/bash#Shell Command For Backup MySQL Database Everyday Automatically By Crontab#Author :

理解linux 下的磁盘分区及系统的结构

在linux下,任何设备,任何程序均是由一个文件表示.一块硬盘,硬盘中的分区均是由一个文件来表示. 在linux系统中,/dev 是一个特殊的目录,里面存储的都是设备类文件,如硬盘,光驱,USB等, hd 表示这是一个IDE 或 SATA  接口的硬盘设备 sd 表示这是一个SCSI 或 USB  接口的设备 硬盘的顺序使用a ,b , c,....表示第几块硬盘 硬盘的分区号使用1,2,3,4,..表示, 逻辑分区从5,.... 类如: /dev/hda2 指的是第一块IDE 或SATA 接口

Linux系统监控脚本实战

1.局域网网段内主机是否存活脚本ping.sh#!/bin/bash#ping and test hosts of lans is alive!for i in {1..254}dohost=10.57.36.$iping -c3 $host >& /dev/nullif [ $? = 0 ];then   echo "$host is alive!" >> /tmp/hosts.logelse   echo "$host is down!"

Linux下模拟多线程的并发并发shell脚本

分享一个在Linux下模拟多线程的并发脚本,使用这个脚本可以同时批量在定义数量的服务器上执行相关命令,比起普通for/while循环只能顺序一条一条执行的效率高非常多,在管理大批服务器时非常的实用.     以下脚本功能是通过scp(也可选rsync)向上千台服务器传更新包,脚本运行后同时在后台有50个scp进程向服务器传包.#!/bin/baship=`cat iplist.txt|grep -v "#"|awk '{print $1}'`   #过滤服务器IPdir='/usr/l