ats程序崩溃会在主目录下出现core.xxx的文件(xxx是数字),由于我不是每测试一条请求就去看看是否崩溃了,所以有时候已经崩溃了但是我没有及时发现,导致记不清楚崩溃可能的复现步骤,所以我想写个自动化脚本,通过计划任务查询此目录下是否有core.xxx文件出现,只要一出现就弹出来一个框提示我崩溃了。下面是我的具体实现:
一、弹出提示框的想法:
find.sh脚本:
#!/bin/bash
if ls /usr/local/squid/core* >/dev/null 2>&1;then
whiptail --title "jiankong" --msgbox "bengkuile!" 10 15
fi
加入计划任务:
crontab -e
*/1 * * * * /home/shell/bin/find.sh
执行find.sh,如果在
/usr/local/squid/下存在core.xxx文件则崩溃提示界面会出现,按任意键回到执行界面,但是当把此脚本加入到计划任务时,当崩溃文件出现时此界面不能弹出。-------暂时还是不知道解决方法,我用原来我写的执行python画图程序弹出图的脚本放在计划任务中也不能弹出画的图
二、向终端发提示信息的想法:
加入计划任务:
crontab -e
*/1 * * * * /home/shell/bin/find.sh
find.sh脚本:
#!/bin/bash
if ls /usr/local/squid/core* >/dev/null 2>&1;then
wall "appear core file!" -----向所有终端发送崩溃提示信息
fi
则所有登录此机器的终端界面都会出现下面的信息
Message from root@localhost on at 17:25 ...
appear core file!
EOF
=====如果想控制在某台机器终端上显示此提示信息,可以这样写:
find.sh脚本:
#!/bin/bash
if ls /usr/local/squid/core* >/dev/null 2>&1;then
echo "appear core file!"|write test1 pts/3-----向指定终端发送崩溃提示信息
fi
=====如果写成
echo "appear core file!"|write root,执行find.sh,则提示如下,感觉是从最近打开的那个终端显示提示信息
write: root is logged in more than once; writing to pts/4
====附上:从下面可知道登录用户
如test1 pts/3
[root@localhost bin]# w
17:32:56 up 3 days, 1:40, 4 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/1 192.168.10.168 16:44 0.00s 0.05s 0.00s w
root pts/2 192.168.10.168 17:22 30.00s 0.03s 0.03s -bash
test1 pts/3 192.168.10.168 17:20 4:20 0.04s 0.04s -bash
root pts/4 192.168.10.168 17:24 8:26 0.03s 0.03s -bash
此想法的弊端:
第二中方法如果用户在进行别的操作可能就没看到这个提示信息,提示信息可以加颜色?待研究
三、发邮件,崩溃了就给我发邮件
/home/shell/bin/mail.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import smtplib
#标题
subject = 'sub'
mailto = 'xxx@163.com'
#内容
body = 'faint'
owner ='xxx@163.com'
passwd ='xxxxxx'
svr = smtplib.SMTP('mail.163.com',25)
svr.login(owner,passwd)
msg = "From: %s\nTo: %s\nSubject: %s\n\n%s\n" % (owner,mailto,subject,body)
svr.sendmail(owner,mailto,msg)
svr.quit()
/home/shell/bin/find.sh
#!/bin/bash
if ls /usr/local/squid/core* >/dev/null 2>&1;then
python /home/shell/bin/mail.py
fi
弊端:当崩溃文件出现时就会收到提示的邮件,邮件可能有一些延迟,且不知道是发送哪个请求时崩溃的
四、作为测试中的一个检查项写入测试脚本中
python崩溃检查函数如下:
def check_crash_core(proxyIp,sshPort,user,passwd):
cmd='ls /usr/local/squid/core*'
temp=ssh_cmd(proxyIp,sshPort,user,passwd,cmd)
l=len(temp)
if l<>0:
print "program is crashed"
filewriteappend("/home/shell/log/requestResult.log"," program is crashed\n")
else:
print "program is not crashed"
filewriteappend("/home/shell/log/requestResult.log"," program is not crashed\n")
这样我发一次测试请求就会执行此函数一次,在requestResult.log文件中看到是否有崩溃出现且知道是发送哪条请求(执行哪条测试用例)出现的崩溃,便于排查问题
以便重现崩溃
阅读(1987) | 评论(0) | 转发(0) |