shell编程实战以内存检查超过设置值杀死php-fpm进程-linux运维
当定位到题目后,从新设计了表构造,给对应的几个字段加上了索引。加上索引之后,还是偶然会涌现cpu、内存快耗尽的状况。关于这种状况,我编写了一个shell足本,用来监控办事器内存的运用率,一旦达到预设值时,杀死所有的php-fpm进程,开释办事器的压力。
第一,我们要猎取办事器的内存运用率。通过free可以猎取总内存大小以及运用内存多少
# free total used free shared buff/cache available Mem: 7999972 5432684 152496 2480 2414792 2284544 Swap: 0 0 0
我们需要的是Mem那行的,total以及used项。我们通过grep以及awk下令,可以获得目前系统的内存运用率。
free |grep -i mem | awk '{n=$3/$2; printf("%.0f", n * 100)}'
获得了内存运用率后,然后拿它和预设值作比拼。当大于预设值时,就把系统中所以php-fpm进程杀死。那么接下来的工作就是怎样寻出系统中所有php-fpm进程,以及怎样去杀死这些进程。
想要猎取系统所有的php-fpm进程,可以运用ps下令,然后联合grep过滤即可。
ps aux | grep php-fpm | grep -v grep | grep -v master www 21210 0.0 0.1 157852 8596 ? S 19:33 0:00 php-fpm: pool www www 21211 0.0 0.1 157852 8596 ? S 19:33 0:00 php-fpm: pool www ……
通过上面的下令猎取到了所有php-fpm进程,然后我们遍历这些信息,通过kill 进程号,来杀死php-fpm进程。
下面给出完备的shell足本程序:
#!/bin/bash # 内存检查,超过70%,杀死所有php-fpm进程 MEM_LIM=70 used=$(free | grep -i mem | awk '{n=$3/$2;printf("%.0f", n*100)}') if ((used > MEM_LIM));then pids=`ps aux | grep php-fpm | grep -v grep | grep -v master | awk '{print $2}'` for pid in $pids do kill -9 $pid done fi
上述的足本是非常简略了,清晰下令。下面总结下该足本程序运用了哪些见识点:
free下令猎取内存运用率
ps下令猎取所有php-fpm进程
kill下令杀死进程
shell编程前提分支以及轮回构造
以上就是shell编程实战以内存检查超过设置值杀死php-fpm进程的细致内容,更多请关注 百分百源码网 其它相干文章!