linux下监视进程 崩溃挂掉后自动重启的shell脚本-阿里云开发者社区

开发者社区> double2li> 正文

linux下监视进程 崩溃挂掉后自动重启的shell脚本

简介: 如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务程序时经常会碰到这样的问题。在Linux系统中,强大的shell就可以很灵活的处理这样的事务。     下面的shell通过一个while-do循环,用ps -ef|grep 检查loader进程是否正在运行,如果没有运行,则启动,这样就保证了崩溃挂掉的进程重新被及时启动。
+关注继续查看

 如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务程序时经常会碰到这样的问题。在Linux系统中,强大的shell就可以很灵活的处理这样的事务。

    下面的shell通过一个while-do循环,用ps -ef|grep 检查loader进程是否正在运行,如果没有运行,则启动,这样就保证了崩溃挂掉的进程重新被及时启动。

    必须注意两点:

    1、ps |grep 一个进程时必须加上其路劲,否则容易grep到错误的结果;

    2、必须用 -v 从结果中去除grep命令自身,否则结果非空。

    复制代码代码如下:

    #!/bin/sh

    while :

    do

    echo "Current DIR is " $PWD

    stillRunning=$(ps -ef |grep "$PWD/loader" |grep -v "grep")

    if [ "$stillRunning" ] ; then

    echo "TWS service was already started by another way"

    echo "Kill it and then startup by this shell, other wise this shell will loop out this message annoyingly"

    kill -9 $pidof $PWD/loader

    else

    echo "TWS service was not started"

    echo "Starting service ..."

    $PWD/loader

    echo "TWS service was exited!"

    fi

    sleep 10

    done

    如果启动此shell时发现进程已经存在,说明以别的方式启动了进程而不是此shell,那么它会持续提醒找到进程,解决办法是,要么只用此shell启动服务,要么一经发现以其他方式启动的服务即kill掉,上面的语句就是这么干的:

    kill -9 $pidof $PWD/loader

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux下apache服务器安装,sqlite安装,apache启动,关闭,重启,编写cig程序进行测试,浏览器访问cig程序
 1安装ubuntu 14.04 64位操作系统 2安装apache和sqllite以及依赖的sqllite开发库 3配置目录 /etc/apache2 4 html页面目录 var/www/ 5 cgi-bin目录 /usr/lib/cgi-bin 6日志文件:/var/log/apache2 7站点配
1856 0
多进程监控自动关机工具升级远程关闭多台server——C# works with PowerShell
之前给单位做过一个多进程监控的自动关机工具,详见那篇blog。 这次领导又加了需求,说要等进程监控结束后,不止需要关闭主控端server,还需要关闭其他servers。于是就用到了我上篇文章所介绍的知识——通过PowerShell来远程管理计算机。
941 0
kill命令"-1"这个参数到底是杀进程还是reload?(转)
kill-1:重新读取一次参数的配置文件 (类似 reload) 这句话给我的感觉是把进程杀掉后重启进程,即 reload。而我查了下 man kill,-1 对应的 signal 是 SIGHUP,用个find / -perm +7000 > /dev/null 2>&1 &命令试验了下确实是杀进程,鸟哥说反了? SIGHUP - hangup or exit a foreground running process from a terminal 原因:对daemon是重新读取配置,对普通进程就是杀掉。
637 0
ubuntu 18.04 如何设置开机自动启动脚本
本文主要为大家介绍如何通过systemd来实现ubuntu 18.04系统开机自动运行脚本。
7541 0
+关注
double2li
一个在IT行业摸爬滚打的老司机
2870
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载