shell编程很强大!
网站访问量大的时候mysql的压力就比较大,当mysql的CPU利用率超过300%的时候就不能提供服务了,近乎卡死状态,这时候最好的方法就是重启mysql服务。由于这种事具有不可预见性,我们不知道什么时候mysql的占用率达到300%,还是写个程序定期判断比较靠谱。
学了shell编程,写了下面的脚本:
#!/bin/bash
cpu=`ps aux | grep 'mysqld$' | cut -d " " -f6 | cut -d. -f1`
if [ $cpu -gt 300 ]
then
service mysql restart && date >> /tmp/mysql.log
fi
稍微解释一下。首先执行"ps aux"命令获取所有系统进程的状态信息,包括CPU,内存等,如下图:
然后通过管道将信息传送给grep,$就是正则表达式结尾的意思,从所有的进程中找到以“mysqld”结尾的进程,其实就是mysql...
在计算apache占用cpu率的时候写了一脚本,以前没有接触过,由于读图网租用的服务cpu总是超频,所以想当 apache cpu使用率超过好多的时候就重启.
网上我看到也有现成 计算apache cpu使用率的sh文件下载,但是感觉自己写好一点,毕竟经常使用到服务器的,总得会点shell脚本吧!
shell脚本报错:"[: =: unary operator expected"
在匹配字符串相等时,我用了类似这样的语句:
if [ $STATUS == "OK" ]; then echo "OK"fi在运行时出现了 [: =: unary operator expected 的错误,就一直找不到
原因,尝试了删除等号两侧的空格和括号里的空格都不管用,最后baidu了一下,才找到原因。把语句改成这样就不会出错了
:if [[ $STATUS = "OK" ]]; then echo "OK"fi究其原因,是因为如果变量STATUS值为空,那么就成了 [ = "OK"] ,显
然 [ 和 "OK" 不相等并且缺...