以前曾在Linux上维护应用服务,但是只是简单的迭代版本等工作,没有什么技术含量。最近部署在Linux服务器上的一个平台的总线进程broker(下面总线用broker指代)经常挂掉,由于总线负责服务之间通讯,分发消息给各个应用服务,总线一旦挂掉就导致整个平台瘫痪。总线进程挂掉需要人工重启,在没有找到具体原因前维护起来很不方便,而且往往是用户先发现才反馈过来,所以先写一个守护进程,一旦总线挂掉就重启。网上查了很多资料,总算搞出来了,大体写一下实现步骤,即是备忘也分享给大家,相互交流。

  先说一下大体思路:

  1、创建一个脚本文件middle_start,循环查找broker进程是否存在,如果不存在就启动broker;

  2、另外创建一个启动脚本start,启动middle_start,指定middle_start为后台进程;

  3、再创建一个结束end,先结束守护进程,再结束broker。

  第一步的middle_start代码如下:

#! /bin/bash
sysctl -w net.core.wmem_default=
sysctl -w net.core.wmem_max=
sysctl -w net.core.rmem_default=
sysctl -w net.core.rmem_max=
#program directory path
PRO_PATH=$PWD
#program name
PRO_NAME="/broker"
#program path, not need configure.
PRO_MAIN=$PRO_PATH$PRO_NAME
#GNOME start program, not need configure.
PROGRAM_GNOME="gnome-terminal -e \"$PRO_MAIN\""
#start method GNOME or nohup (eg: GNONE-->STAR_PRO=$PROGRAM_GNOME ; nohup-->STAR_METHOD=$PRO_MAIN)
STAR_METHOD=$PRO_MAIN
export LD_LIBRARY_PATH=../../lib:$LD_LIBRARY_PATH while :
do
PRO_NOW=`ps aux | grep $PRO_MAIN | grep -v grep | wc -l`
if [ $PRO_NOW -lt 1 ]; then
echo "-- start broker --"
$STAR_METHOD 2>/dev/null 1>&2 &
curtime=`date +"%Y-%m-%d %H:%M:%S"`
echo "$curtime $PRO_MAIN start" >> $PRO_PATH/tinfo.log
fi
sleep 5
done
exit 0

主要看红色部分。

  第二步的start脚本如下:

#! /bin/bash
./middle_start.sh &

  第三部的end脚本也很简单:

#!/bin/bash
#progress name
PRO_NAME="middle_start.sh"
BRK_NAME="broker" ps -ef|grep $PRO_NAME |grep -v grep|awk '{print $2}'|xargs kill
echo "kill $PRO_NAME done!"
ps -ef|grep $BRK_NAME |grep -v grep|awk '{print $2}'|xargs kill -
echo "kill $BRK_NAME done"

  完成上面的步骤后,启动start脚本,ps查询broker已经运行,强行kill掉后broker仍然存在,已经是小强般的存在,执行end后broker销毁。

Linux系统添加应用服务进程的守护进程的更多相关文章

  1. Linux系统编程(26)——守护进程

    Linux系统启动时会启动很多系统服务进程,比如inetd,这些系统服务进程没有控制终端,不能直接和用户交互.其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户 ...

  2. 嵌入式linux驱动开发之给linux系统添加温度传感器模块

    忙了几天,终于可以让ds18b20在自己的开发板的linux系统上跑了!虽然ds18b20不是什么新鲜玩意,但是想想知己可以给linux系统添加模块了还是有点小鸡冻呢! 虽然说现在硬件的资源非常丰富而 ...

  3. linux第1天 fork exec 守护进程

    概念方面 文件是对I/O设备的抽象表示.虚拟存储器是对主存和磁盘I/O设备的抽象表示.进程则是对处理器.主存和I/O设备的抽象表示 中断 早期是没有进程这个概念,当出现中断技术以后才出现进程这个概念 ...

  4. 不同linux系统添加开机启动程序的命令

    see http://phpcj.org/blog/%E4%B8%8D%E5%90%8Clinux%E7%B3%BB%E7%BB%9F%E6%B7%BB%E5%8A%A0%E5%BC%80%E6%9C ...

  5. linux系统添加环境变量,node.js forever 守护进程添加环境变量

    1.node.js 守护进程组件 forever 安装 npm install forever -g 安装完成后截图: 2.安装完成后在控制台输入 forever 出现 -bash: forever: ...

  6. Linux学习笔记(9)-守护进程

    明天学这个!! ---------------------------------------------------------- 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终 ...

  7. Linux+Nginx+Asp.net Core及守护进程部署

    上篇<Docker基础入门及示例>文章介绍了Docker部署,以及相关.net core 的打包示例.这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完 ...

  8. Linux系统上对其他用户隐藏进程的简单方法

    mount -o remount,rw,hidepid=2 /proc 我使用的是多用户系统,大部分的用户通过ssh客户端访问他们的资源.我如何(怎么样)避免泄露进程信息给他们?如何(怎么样)在Deb ...

  9. linux c语言学习笔记之守护进程

    哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处 http://blog.csdn.net/woshixingaaa/archive/2010/06/06/5651095.aspx 守 ...

随机推荐

  1. 第四课 OOP封装继承多态解析,接口抽象类选择 2019-04-21

    父类 xx = new 子类(); xx.method(); 1 普通方法由编译时决定(左边) --- 提高效率 2 虚方法(virtual)  由运行时决定-- -多态,灵活 3 抽象方法由运行时决 ...

  2. 风速风向 UV 相互转换

    这里以c#为例将风的uv分量转成风向风速(别的语言类似) 风向是以y轴正方向为零度顺时针转 UV转风速风向 1 double v ;//v分量 2 double u;//u分量 3 double fx ...

  3. KNN算法基本原理与sklearn实现

    ''' KNN 近邻算法,有监督学习算法 用于分类和回归 思路: 1.在样本空间中查找 k 个最相似或者距离最近的样本 2.根据这 k 个最相似的样本对未知样本进行分类 步骤: 1.对数据进行预处理 ...

  4. python基础day7_购物车实例

    print("欢迎光临") money = input("请输入您的金额:") shopping_car ={} li = [{"name" ...

  5. PDO::lastInsertId

    PDO::lastInsertId — 返回最后插入行的ID或序列值(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0) 说明 语法 string PDO::lastIn ...

  6. python之路第一节-pip的使用

    第一次写博客,一边吃着旺仔冻痴一边学着python,爽~ 我之理解pip 首先,python封装好了大量的函数,这些函数存在各种各样的库中. 那么怎么去向我们可爱的pycharm等软件导入这些库呢,两 ...

  7. vmware15虚拟机安装教程

    自己碰到的问题:本人win7 64位旗舰版系统.之前用VMware12pro版本的软件,在安装Ubuntu18.04之后,有时候开启Ubuntu虚拟机时有点问题,重启就可以了.但是不稳定,所以改用VM ...

  8. myBatis源码解析-数据源篇(3)

    前言:我们使用mybatis时,关于数据源的配置多使用如c3p0,druid等第三方的数据源.其实mybatis内置了数据源的实现,提供了连接数据库,池的功能.在分析了缓存和日志包的源码后,接下来分析 ...

  9. Ant Design Pro V5 从服务器请求菜单(typescript版)

    [前言] 找了很多Admin模板,最后还是看中了AntDesignPro(下文简写antd pro)这个阿里巴巴开源的Admin框架,长这样(还行吧,目前挺主流的): 官网地址:https://pro ...

  10. Java高级篇XML和正则表达式

    常见的XML解析技术: 1.DOM(基于XML树结构,比较耗资源,适用于多次访问XML): 2.SAX(基于事件,消耗资源小,适用于数量较大的XML): 3.JDOM(比DOM更快,JDOM仅使用具体 ...