免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3682 | 回复: 15
打印 上一主题 下一主题

求助!通过shell控制squid服务当掉时,自动重起服务,并发送手机短信。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-06 14:47 |只看该作者 |倒序浏览
俺们公司有台服务器,B市电信的服务器上面跑了squid服务,代理A市的所有网通服务器上跑的网站。
最近一到周末,squid代理就老自己当掉,所以想找个办法,通过shell控制当掉的squid能够自动重启服务,并发送邮件(手机短信)等通知。
     常遇到的squid当掉的情况,有两种:1. 需要清理cache    cd /var/spool/squid, rm -rf * (清空cache目录)     2. 是  /var/log/squid  里面日志文件太大了。 也要清理
     老是周末出问题,很烦人,因为常常要和GF出去逛街(汗。。。女人真的很能逛~)为这事,也没少挨说。所以下决心想通过shell脚本来实现上述功能。
      
     需要实现的功能:
     1.就是在squid当掉的情况下,能够重启服务 但因为一般当掉都是因为需要清理cache,和日志文件,所以目前没想出什么办法
     2.最起码要实在的功能,就是在squid当掉的情况下,能够发送邮件通知一下,最好能够发送手机短信。

目前。。。我些了个脚本如下:
rs_squid.sh
#!/bin/sh
processnum=`ps -ef --cols 300 | grep -E "squid -D" | wc -l | grep -E [0-9]{1}` //统计squid正常工作时的进程个数
if [ $processnum -gt 2 ]         //对比进程数
then
  service squid restart           //重启服务
fi
但自己测试时。。。发现服务没法重启。。。求助高手帮忙看看~~另外如果知道怎么发邮件,或短信通知。也请赐教

[ 本帖最后由 xiapeng 于 2007-8-6 14:49 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-08-07 09:28 |只看该作者
WATCHDOG这个软件不知道有没有测试过!

论坛徽章:
0
3 [报告]
发表于 2007-08-07 09:37 |只看该作者
原帖由 xiapeng 于 2007-8-6 14:47 发表
f [ $processnum -gt 2 ]         //对比进程数
then
  service squid restart           //重启服务
fi
...

为什么squid进程数高于2就要重启呢?

论坛徽章:
0
4 [报告]
发表于 2007-08-07 14:20 |只看该作者
但因为一般当掉都是因为需要清理cache,和日志文件

那你为什么不写个检测cache目录和日志大小的脚本呢?达到一定大小就清空,这样服务不是就不会当了啊

论坛徽章:
0
5 [报告]
发表于 2007-08-07 17:54 |只看该作者
汗....问题是....我只会一些简单的shell编程.我也想做到检测cache和日志文件.但是不只到从哪下手.
另外,我那个脚本,重启服务也有问题,启动不了我试了.

论坛徽章:
0
6 [报告]
发表于 2007-08-07 17:56 |只看该作者

回复 #3 tom_xx_hu@yahoo 的帖子

$processnum -gt 2
这句话是大于2吗?
晕...因为我用root ps - ef | grep "squid -D"
能得出2个进程.
所以就用这个个数来判断了.
我的原意,是想判断,如果小于2或不等于2,那就重起squid服务的.

论坛徽章:
0
7 [报告]
发表于 2007-08-07 18:12 |只看该作者
原帖由 xiapeng 于 2007-8-7 17:54 发表
汗....问题是....我只会一些简单的shell编程.我也想做到检测cache和日志文件.但是不只到从哪下手.
另外,我那个脚本,重启服务也有问题,启动不了我试了.


ls -l 你要检查的目录 |  grep "mp3"  |  awk '{print $5}'

列出包含mp3 这三个字符的文件的大小,
然后和你指定的大小一比较,大于了就rm -f

还有,你可以查看一下squid的资料,你说的问题,应该可以通过调整squid配置参数来解决,日志达到一定数量后自己清,这种功能任何一个服务程序都有吧。这才是正道,比你用shell脚本好多了,不同类型的的问题应该选用一种最优的方法来解决,不一定要用shell.

[ 本帖最后由 qintel 于 2007-8-7 18:23 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-08-08 12:54 |只看该作者
原帖由 xiapeng 于 2007-8-7 17:56 发表
$processnum -gt 2
这句话是大于2吗?
晕...因为我用root ps - ef | grep "squid -D"
能得出2个进程.
所以就用这个个数来判断了.
我的原意,是想判断,如果小于2或不等于2,那就重起squid服务的.

七楼的方法你去试。我这里只就事论事说shell程序的问题。
你的原意没错(也错,见后说明),但是
$processnum -gt 2

背叛了你。它说squid进程数大于2的时候重启。实际上你要的是小于2时重启。如果我没有猜错的话,squid进程数是会大于2的,那么你就不应该在大于2时重启。

论坛徽章:
0
9 [报告]
发表于 2007-08-09 14:15 |只看该作者

回复 #8 tom_xx_hu@yahoo 的帖子

谢谢,我已经改成 -lt 2了,现在小于2就会重启了。:)

论坛徽章:
0
10 [报告]
发表于 2007-08-09 14:18 |只看该作者

回复 #7 qintel 的帖子

这句话正是我想要的,谢谢啊。这样就可以及时的对比,清理日志了。
但清理 squid的cache 需要rm -rf cache所在目录下的文件。而且我试了,好像清完cache必须重启下squid才会重建cache
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP