[shell]关闭超时的进程

Posted 我叫宋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[shell]关闭超时的进程相关的知识,希望对你有一定的参考价值。

应同事要求,写了个shell, 主要功能为查找超时的进程,并关闭!

调用方式:

sh monter_shell_minute.sh shell_sleep 30

shell_sheep :  为进程名

30 : 为30分钟

从打印的日志能看出会多两个PID,不要惊慌,由于你执行时会带有 搜索的“程序名”,且执行时也会产生一个,所以会有两个pid(运行时间比较短)。

也可以在crontab 中写任务,每隔一段时间执行一次。。

 

#!/bin/bash

# author : jackical input_program
=$1 input_minue=$2 sn_lines=`ps -ef|grep ${input_program}|grep -v grep|awk {print $2}` echo sn_lines: echo ${sn_lines} if [ "${sn_lines}" -eq "" ] then echo program has end! else IFS=$ for i in ${sn_lines}; do echo "line pid:" ${i} run_info=`ps -eo pid,etime|grep ${i}|awk {print $2}` run_time=${run_info/${i}/} run_time2=${run_time/[[:space:]]/} #程序运行时间 echo "program run time:" ${run_time2} echo "run_time2 length :" ${#run_time2} # 超过一天 if [ ${#run_time2} -gt 9 -a $input_minue -lt 86400 ] then echo "已超时!" cmd="kill -9 "$i eval $cmd echo $cmd else if [ ${#run_time2} -gt 9 ] then echo "big 10" cust_date=`expr $input_minue/86400`"-"`expr $input_minue%86400` | awk {printf("%02d ",$0)}‘":"$input_minue":00" echo cust_date: ${cust_date} echo run_time2: $run_time2 if [ ${cust_date}<${run_time2} ] then echo "超过一天,没有超时" else echo "超过一天,超时" cmd="kill -9 "$i eval $cmd echo $cmd fi else echo "small 10" # 没有超过一天 cust_date=${input_minue}"00" run_time2=${run_time2//:/} if [ ${#run_time2} -eq 6 ] then run_time2=${run_time2:0:4} fi echo "cust_date:" $cust_date echo "run_time2:" $run_time2 if [ ${cust_date} -lt ${run_time2} ] then echo "超时" cmd="kill -9 "$i eval $cmd echo $cmd else echo "没有超时" fi fi fi done fi

 


以上是关于[shell]关闭超时的进程的主要内容,如果未能解决你的问题,请参考以下文章

使用带有超时的异步模式的boost进程运行进程

Shell外壳的简易模拟

xshell进sparkshell输入代码报错

shell学习四十九天----进程建立

Bash的变量类型

shell 中给命令设置超时时间