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

调用方式:

sh monter_shell_minute.sh shell_sleep 

shell_sheep :  为进程名

30 : 为30分钟

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

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

#!/bin/bash

# author : jackical
# lastchagetime : -- input_program=$
input_minue=$ 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=$'\n'
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 -a $input_minue -lt ]
then
echo "已超时!"
cmd="kill -9 "$i
eval $cmd
echo $cmd
else
if [ ${#run_time2} -gt ]
then
echo "big 10"
cust_date=`expr $input_minue/`"-"`expr $input_minue%/` | awk '{printf("%02d\n",$0)}'":"`expr $input_minue%` | awk '{printf("%02d\n",$0)}'":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"
# 没有超过一天
run_time2=${run_time2//:/}
if [ ${#run_time2} -eq ]
then
run_time2=${run_time2::}
cust_date=`expr $input_minue/`""`expr $input_minue%`
else
cust_date=${input_minue}""
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

最后建议在linux 下新建个文件,再把内容贴进去。从本地windows环境下上传shell到linux 环境,会遇到“一脸懵B”的尴尬..

[shell]关闭超时的进程的更多相关文章

  1. Shell 关闭指定进程

    例如要关闭jupyter-notebook这个进程: - | 说明:管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入. “ps -ef” 查看所有进程 “grep -v g ...

  2. shell关闭指定进程

    例如要关闭jupyter-notebook这个进程: ps -ef | grep jupyter-notebook | grep -v grep | cut -c 9-15 | xargs kill ...

  3. C# 强制关闭当前程序进程(完全Kill掉不留痕迹)

    C# 强制关闭当前程序进程(完全Kill掉不留痕迹) /// <summary> /// 运行DOS命令 /// DOS关闭进程命令(ntsd -c q -p PID )PID为进程的ID ...

  4. 是什么在.NET程序关闭时阻碍进程的退出?

    在平时使用软件或是.NET程序开发的过程中,我们有时会遇到程序关闭后但进程却没有退出的情况,这往往预示着代码中有问题存在,不能正确的在程序退出时停止代码执行和销毁资源.这个现象有时并不容易被察觉,但在 ...

  5. linux使用shell脚本停止java进程

    使用shell脚本停止java进程,过程就是先查出对应的java进程pid,然后kill掉 - | 其中xxx是对应进程的关键词(即从查出的所有java进程中分辨出目标进程)

  6. Linux 两组信号对比(关闭和停止进程信号)

    之前看信号的时候,没有太注意不同信号的对比.今天再次看到的时候,突然感觉对一些信号,非常相似,乃至非常容易混淆.今天周末就抽空总结一下. 一.关闭进程信号 常见的4中关闭进程信号是SIGKILL,SI ...

  7. C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程

    这里安装windows服务我们用sc命令,这里需要远程服务器IP,服务名称.显示名称.描述以及执行文件,安装后需要验证服务是否安装成功,验证方法可以直接调用ServiceController来查询服务 ...

  8. 如何优雅的退出/关闭/重启gunicorn进程

    在工作中,会发现gunicorn启动的web服务,无论怎么使用kill -9 进程号都是无法杀死gunicorn,经过我一番百度和谷歌,发现想要删除gunicorn进程其实很简单. 1. 寻找mast ...

  9. Linux 下Tomcat的启动、关闭、杀死进程

    Linux下Tomcat的启动.关闭.杀死进程 打开终端 cd /java/tomcat #执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat ...

随机推荐

  1. LGWR和DBWn的触发条件

    Rolling Forward(前滚) Oracle启动实例并加载数据库,然后通过Online Redologs中的重做日志,重现实例崩溃前对数据库的修改操作.在恢复过程中对于已经提交的事务,但尚未写 ...

  2. Phoenix介绍(持续更新)

    现有hbase的查询工具有很多如:Hive,Tez,Impala,Shark/Spark,Phoenix等.今天主要记录Phoenix. phoenix,中文译为“凤凰”,很美的名字.Phoenix是 ...

  3. Java中的Number和Math类简单介绍

    Java Number类 一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double 等. 实例: int a = 5000; float b = 13.65 ...

  4. Python 应用剖析工具介绍

    [编者按]本文作者为来自 HumanGeo 的工程师 Davis,主要介绍了用于 Python 应用性能分析的几个工具.由国内 ITOM 管理平台 OneAPM 编译呈现. 在 HumanGeo,我们 ...

  5. select2加载远程数据示例

    核心js $("#query_pack_code").select2({ language: "zh-CN", allowClear: true, width: ...

  6. Linux学习之CentOS(一)----在VMware虚拟机中安装CentOS 7

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...

  7. idea 版本控制忽略文件、文件夹设置

    setting 或者底部的 设置 忽略某个文件 后面选择框可以去选择 忽略某个文件夹 后面选择框可以去选择 忽略某种文件 后面输入填写如: *.txt

  8. ReadWriteLock ReentrantReadWriteLock

    ReadWriteLock管理一组锁,一个是只读的锁,一个是写锁.读锁可以在没有写锁的时候被多个线程同时持有,写锁是独占的. 所有读写锁的实现必须确保写操作对读操作的内存影响.换句话说,一个获得了读锁 ...

  9. MySQL的前缀索引及Oracle的类似实现

    MySQL有一个很有意思的索引类型,叫做前缀索引,它可以给某个文本字段的前面部分单独做索引,从而降低索引的大小. 其实,Oracle也有类似的实现,对于文本,它可以通过substr的函数索引,实现同样 ...

  10. [C++] 用Xcode来写C++程序[5] 函数的重载与模板

    用Xcode来写C++程序[5] 函数的重载与模板 此节包括函数重载,隐式函数重载,函数模板,带参数函数模板 函数的重载 #include <iostream> using namespa ...