shell 监控一个程序或者命令执行时间
2013-08-07 15:10
531 查看
这个需求是我一个“朋友”问我的,她想监控系统上一个命令,如果执行超过5分钟还没有结束,就要kill掉或者发邮件,短信之类的!
我最开始的思路比较简单:
第二天果断修改脚本:
本来都顶格的,但是代码贴上来都变了!!!!!!!!!
本文出自 “面对自己” 博客,请务必保留此出处http://angus717.blog.51cto.com/1593644/1266037
我最开始的思路比较简单:
#!/bin/bash #author junun #blog http://angus717.blog.51cto.com function angus() { timestart_array=(`ps aux | grep test.sh | grep -v "grep" | awk '{print $2"_"$9}'`) timenow=`date -d "3 minute ago" | awk '{print $4}' | cut -d":" -f1-2` declare -a arror_time=($@) for i in `echo ${arror_time[*]}`;do m=`echo $i | cut -d"_" -f1` echo $m n=`echo $i | cut -d"_" -f2` echo $n if [[ $n == $timenow ]];then echo "$m will be killed" kill $m #mail -s "The process id ($m)is running time too long!" 123456@qq.com else echo "this ok" fi done } angus就是根据ps start那项判断该命令执行多久了(为了测试我写了个死循环test.sh),但是人家说了这个不行,他们老大说判断pid什么的,然后他老大写出来一个让他很自豪的脚本,然后很很鄙视了小生一把!好吧,水平不高咱就虚心请教呗!人家还怕咱学会了,然后不鸟咱了,人活一口气!
第二天果断修改脚本:
[root@localhost ~]# cat nimawohenshengqi.sh #!/bin/bash #author junun #blog http://angus717.blog.51cto.com # function checkdate() { x=$1 y=$2 z=$3 nowtime=`/bin/date | awk '{print $2" "$3" "$4}'` nowtime_day=`echo $nowtime | awk '{print $2}'` nowtime_hour=`echo $nowtime | awk -F"[ |:]" '{print $3}'` nowtime_minute=`echo $nowtime | awk -F"[ |:]" '{print $4}'` if [ $x = $nowtime_day ];then now_mins=`expr $nowtime_hour \* 60 + $nowtime_minute` star_mins=`expr $y \* 60 + $z` time_interval=`expr $now_mins - $star_mins` else echo "The process is running time too long!" fi } function angus() { runtime_interval=$1 [ -z "${runtime_interval:-}" ] && runtime_interval=5 timestart_array=(`ps aux | grep test.sh | grep -v "grep" | awk '{print $2}'`) for i in `echo ${timestart_array[*]}`;do m=`ls -ld /proc/$i | awk '{print $7}'` n=`ls -ld /proc/$i | awk -F"[ |:]" '{print $9}'` a=`ls -ld /proc/$i | awk -F"[ |:]" '{print $10}'` checkdate $m $n $a if [[ $time_interval -ge $runtime_interval ]];then echo "$i will be killed" /bin/kill $i else echo "Command is ok" fi done } angus $1修改过后可以接受参数定义(定义执行几分钟没有的程序或者命令会被kill)总的来说是可以实现功能了,但是我感觉有点复杂,请伙伴们,给出更优秀的方案!
本来都顶格的,但是代码贴上来都变了!!!!!!!!!
本文出自 “面对自己” 博客,请务必保留此出处http://angus717.blog.51cto.com/1593644/1266037
相关文章推荐
- 解决:shell脚本中,无法执行time命令,以统计某个程序执行时间
- 破解android的root权限的本质是:在系统中加入一个任何用户都可能用于登陆的su命令。或者说替换掉系统中的su程序,因为系统中的默认su程序需要验证实际用户权限,只有root和 shell用户才
- 解决:shell脚本中,无法执行time命令,以统计某个程序执行时间
- java执行shell命令或者脚本,返回结果到程序
- FileSystemWatcher是软件程序开发常用到的一个监控组件,但是这个控件的Changed 时间方法老是触发2次或者多次,触发多次的情况
- shell 执行一个程序多次获取预期结果
- JAVA调用系统命令或可执行程序--返回一个Runtime运行时对象,然后启动另外一个进程来执行命令
- 利用java程序执行shell命令
- 安卓root或adb下执行shell命令,滑动时出现断断续续,有时执行有时不执行,同一个点不重合的问题
- 一个shell for循环与case结合的脚本(监控程序状态)
- 写一个监控网络和应用端口的shell脚本程序
- droid代码库之执行Shell命令或者脚本
- 在Linux中定时执行一个程序的方法之at命令
- shell 获取当前时间后根据时间取余数执行命令
- Shell:重复执行一个命令n次
- 程序中执行shell命令
- linux操作之:设置系统启动时,自动启动一些程序,或者执行一些命令
- 执行某个shell命令时出现shell-init的一个错误(目录不存在)
- Linux/shell命令的实际应用——ldd查看可执行程序依赖的库文件
- 如何在java程序中调用linux命令或者shell脚本?