搜索
首页
笔记
案例
关于
课程列表
shell script
执行多个目录下的php脚本
内存检查超过设定值杀死所有php-fpm进程
监控httpd进程数
统计活动IP
判断pid是否一致
网站文件及数据库文件的备份
源码安装mysql
监控磁盘分区的使用率
监控网卡流量
批量创建用户、删除用户
监听端口情况
rm命令太危险,使用自定义的del代替
监控cpu状况
服务器文件备份脚本
课程导航
计算机基础知识
C
Linux
linux常用软件
计算机网络
程序员修养
设计模式
工具
Git
composer
vim
IntelliJ IDEA
wireshark
laravel
Spring
SpringMVC
Maven
数据库
MySQL
Redis
MongoDB
JDBC
Mybatis
MyBatis-Plus
服务端编程
PHP
Java
shell script
JavaWeb
HTML / CSS
HTML
CSS
HTML5
CSS3
BOOTSTRAP
JavaScript
JavaScript
JQuery
layui
源码安装mysql
监控网卡流量
监控磁盘分区的使用率
不知道大家有没有碰到过磁盘分区写满,导致新数据写入不了,造成网站出现了问题。之前自己有几次碰到过这种情况,自己当时紧急解决办法是:删除网站的日志文件,删除了MySQL的binlog日志。 当然我们是不希望发生此类问题的,如果网站总出现不稳定或打不开情况,会给用户一种不靠谱的感觉。所以,对于磁盘分区的使用,我们需要实时监控,当超过预设值时,就发送份邮件或短信给管理员,将错误扼杀至摇篮里。 对于此脚本的编写是很简单的,主要一点就是获取到磁盘分区的使用率。我们知道df命令可以列出各个分区的空间使用情况: ```shell # df Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 3986648 0 3986648 0% /dev tmpfs 3999984 0 3999984 0% /dev/shm tmpfs 3999984 528 3999456 1% /run tmpfs 3999984 0 3999984 0% /sys/fs/cgroup /dev/vda1 41931756 17576208 24355548 42% / /dev/vdb1 52403200 476572 51926628 1% /data /dev/vdb2 104806400 29255772 75550628 28% /www tmpfs 799996 0 799996 0% /run/user/0 /dev/vdb3 52402180 398576 52003604 1% /mnt ``` 我们可以看到各个分区的空间使用情况。然后接口grep命令以及awk命令,过滤掉其他信息,只留下各个分区的使用情况信息。 我们只想得到以/dev/开头的分区信息 ```shell # df | grep ^/dev /dev/vda1 41931756 17576264 24355492 42% / /dev/vdb1 52403200 476572 51926628 1% /data /dev/vdb2 104806400 29255980 75550420 28% /www /dev/vdb3 52402180 398576 52003604 1% /mnt ``` 然后继续使用awk命令过滤不想要的信息 ```shell # df | grep ^/dev | awk '{print $1":"$5}' /dev/vda1:42% /dev/vdb1:1% /dev/vdb2:28% /dev/vdb3:1% ``` 拿到各个分区的使用率后,下面就是对其进行循环遍历,依次判断各个分区的使用情况。 下面给出完成的代码: ```shell #!/bin/bash # 监控分区的空间使用情况,超过预设值告警 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:~/bin export LANG=en # 分区空间使用率阀值 USE_LIM=70 while ((1)) do disks=$( df | grep ^/dev | awk '{print $1":"$5}') for disk in $disks do used=$(echo $disk | cut -d: -f2 | cut -d'%' -f1) if [ "$used" -ge "$USE_LIM" ];then # 调用告警脚本,这里直接用echo来替代了 echo "$(echo $disk | cut -d: -f1) is used $used%" fi done sleep 10 done ``` 注意:一般我们服务器上用的语系都是英文的,特别是在编写shell脚本的时候,建议加上这样一行 ```shell export LANG=en ``` 因为我们是要做实时的监控,所以脚本里使用了死循环,表示此脚本不会停会一直循环执行。当然,执行速度也是要做限制的,不然占用太多服务器资源就不太好了。所以这里使用了sleep 10,表示10秒监控一次。 另外这里还要一点需要注意,就是过滤掉百分号%。这里我们使用了cut命令来过滤掉%,然后拿到纯数字型的分区使用率和预设值做比较。
源码安装mysql
监控网卡流量
文章目录