文档标签: shell
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" 不相等并且缺...
因读图网租用的阿里云服务器是配置的apache总是溢出,所以就想到先用脚本来解决这个问题,再来优化web环境
来看一下我的第一个shell脚本:
[php]
#!/bin/sh
#ps查看进程
status=`ps -ef|grep httpd|wc -l`
echo $status
#判断httpd运行的进程数
if [ "$status" -gt 1 ];then
/etc/init.d/httpd stop
else
/etc/init.d/httpd start
fi
[/php]
下面我将脚本添加到定时执行里面:
[php]
crontab -e//添加到系统定时执行里面去
crontab -l//列出定时执行的条数
*/1 * * * * /tmp/http.sh > /dev/null 2>/tmp/error.log &
[/php]
说一下shell脚本的一些注意事项:
一、文件编码
二、是以/bin/sh还是/bin/bash...
最近阿里云 apache总是占到100%,导致网站开不开,远程无法链接,上面放了一个网站,访问量一大老是无响应,就写了一个监控脚本,每分钟检测一次,如果无法访问就重启服务。 1. 编写Shell脚本,保存到/opt/http_monitor #!/bin/bash
#网站url地址
URL="http://www.xxx.com/"
#获取http响应代码,注意这里是用shift+~这个引起来的
HTTP_CODE=`curl -o /dev/null -s -w "%{http_code}" "${URL}"`
#echo $HTTP_CODE
#服务器能正常响应,应该返回200的代码
if [&...
4 条记录 1/1 页