Linux系统添加应用服务进程的守护进程
以前曾在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系统添加应用服务进程的守护进程的更多相关文章
- Linux系统编程(26)——守护进程
Linux系统启动时会启动很多系统服务进程,比如inetd,这些系统服务进程没有控制终端,不能直接和用户交互.其它进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止,但系统服务进程不受用户 ...
- 嵌入式linux驱动开发之给linux系统添加温度传感器模块
忙了几天,终于可以让ds18b20在自己的开发板的linux系统上跑了!虽然ds18b20不是什么新鲜玩意,但是想想知己可以给linux系统添加模块了还是有点小鸡冻呢! 虽然说现在硬件的资源非常丰富而 ...
- linux第1天 fork exec 守护进程
概念方面 文件是对I/O设备的抽象表示.虚拟存储器是对主存和磁盘I/O设备的抽象表示.进程则是对处理器.主存和I/O设备的抽象表示 中断 早期是没有进程这个概念,当出现中断技术以后才出现进程这个概念 ...
- 不同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 ...
- linux系统添加环境变量,node.js forever 守护进程添加环境变量
1.node.js 守护进程组件 forever 安装 npm install forever -g 安装完成后截图: 2.安装完成后在控制台输入 forever 出现 -bash: forever: ...
- Linux学习笔记(9)-守护进程
明天学这个!! ---------------------------------------------------------- 守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终 ...
- Linux+Nginx+Asp.net Core及守护进程部署
上篇<Docker基础入门及示例>文章介绍了Docker部署,以及相关.net core 的打包示例.这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完 ...
- Linux系统上对其他用户隐藏进程的简单方法
mount -o remount,rw,hidepid=2 /proc 我使用的是多用户系统,大部分的用户通过ssh客户端访问他们的资源.我如何(怎么样)避免泄露进程信息给他们?如何(怎么样)在Deb ...
- linux c语言学习笔记之守护进程
哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处 http://blog.csdn.net/woshixingaaa/archive/2010/06/06/5651095.aspx 守 ...
随机推荐
- Django学习路22_empty为空,forloop.counter 从1计数,.counter0 从0计数 .revcounter最后末尾数字是1,.revcounter0 倒序,末尾为 0
当查找的数据不存在,返回为 空时 在 html 中使用 {%empty%} 语句 进行显示 def getstudents(request): students = Student.objects.a ...
- PHP flock() 函数
定义和用法 flock() 函数锁定或释放文件. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 flock(file,lock,block) 参数 描述 file 必需.规定要 ...
- 7.3 NOI模拟赛 苹果 随机 高维前缀和
头一次遇到高维前缀和的题目 所以赛时不太会写. \(n\cdot Mx\cdot log\)的暴力做法这里不再赘述. 容易想到随机一个数字 然后其有\(\frac{1}{2}\)的概率在答案的集合中. ...
- Spring Boot的自动配置,到底是怎么做到?
作者:祖大帅 链接:juejin.im/post/5b679fbc5188251aad213110 来源:掘金 1. Spring Boot.Spring MVC 和 Spring 有什么区别? 分开 ...
- 银弹谷零代码开发V百科|使用技巧:你已经是个成熟的系统了,该学会无网络升级了
银弹谷零代码开发V百科|使用技巧:你已经是个成熟的系统了,该学会无网络升级了 伴随网络时代的发展,当今越来越多用户家庭的日常生活已经离不开网络.它就像是一张巨大的蛛网,连接起我们每一户人家.虽然网络不 ...
- ios数组基本用法和排序大全
1.创建数组 // 创建一个空的数组 NSArray *array = [NSArray array]; // 创建有1个元素的数组 array = [NSArray arrayWithObject: ...
- ios textView跟随键盘的移动
实现效果: textview 能够跟随键盘的移动而移动 效果图如下: 下边贴上主要的代码: 1.创建textview @interface ViewController ()<UITextVie ...
- java学习day01之String的特点,如何实现,并且有哪些重要方法?
1.以主流的JDK版本1.8来说,String内部实际存储结构为char数组,源码如下: public final class String implements java.io.Serializa ...
- hashMap在jdk1.7与jdk1.8中的原理及不同
在分析jdk1.7中HashMap的hash冲突时,不知大家是否有个疑问就是万一发生碰撞的节点非常多怎么版?如果说成百上千个节点在hash时发生碰撞,存储一个链表中,那么如果要查找其中一个节点,那就不 ...
- python3.4嵌套循环项目:买房分期付款(1)
#案例:买房分期付款24万(10年期限) i=1#定义年份sum1=0while i<=10: print("第",i,"年到了......") j=1# ...