- 浏览: 2242173 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
关键字:Linux下进程管理利器—supervise(监控并将死掉的程序重启)
supervise:系统进程监控管理器
可参考的文章(参考这篇文章可安装成功):
1、linux 安装supervise服务 :http://blog.csdn.net/xvshu/article/details/51792668
2、注意:run脚本没有任何后缀
一、工具supervise
Daemontools是一个包含了很多管理Unix服务的工具的软件包。其中最核心的工具是supervise,它的功能是监控一个指定的服务,当该服务进程消亡,则重新启动该进程。而要添加让supervise监控的服务非常容易,只需要添加一个被监控的服务的目录,在该目录中添加启动服务器的名字为run的脚本文件即可。
其中svscan工具是为指定的工作目录(缺省是/service/目录)下的所有子目录中的每一个子目录都启动一个supervise进程,最多可以启动多达1000个supervise进程(也就是工作目录下可以有多达1000个子目录)。其中每个子目录下都会有一个名为run的用来启动对应服务的脚本程序。Supervise会监控该服务,在服务消亡时使用run脚本来自动启动该服务。若svscan的工作目录下的子目录的sticky位被置位,则svscan将为该子目录启动两个supervise进程,一个监控子目录中的run对应的服务,另外一个监控子目录下的log子目录的记录服务,两者之间通过管道来相互联系。
Svscan每5秒钟检测一次子目录,若出现新的目录则为该目录启动supervise,若某个老的子目录对应的supervise退出,则重新启动它。
该软件包的所有工具的详细信息请参考在线文档。daemontools最经典的搭配是和lighttpd一起使用
二、安装
/pacakage目录(你可以创建任意目录,这里使用package只是为了保持与英文作者的一致):
mkdir -p /package
chmod 1755 /package
cd /package
下载daemontools-0.76.tar.gz到/package目录,解压该包。
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar xvzf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
编译并安装daemontools程序
package/install
【注意】:如果在安装过程中出现安装失败的提示,是因为daemontools 需要一个补丁daemontools-0.76.errno.patch,这个补丁在qmail包中有。或者修改daemontools 源代码来修补这个bug
(修改方法:在src下的conf-cc文件的第一行最后添加如下代码即可 -include /usr/include/errno.h
# vi src/conf-cc
在最后加上 -include /usr/include/errno.h
)
如果安装成功,你可以用下面命令确认:
# ps -ef | grep svscan
# man svscan
此时你查看一下inittab文件:
# cat /etc/inittab
会发现原来daemontools是使用init的方式来保护自己的:
SV:123456:respawn:/command/svscanboot
通过strace命令你能看到系统每隔五秒会核对一下服务:
# strace -p `pidof svscan`
四、使用supervise程序进行程序管理监控
supervise的执行命令是supervise Path ,其中Path 是指定路径,可以是相对路径,也可以是绝对路径。在Path路径下,必须有一个run的脚本,supervise调用的就是这个脚本,并监控管理该脚本中运行的程序。
supervise的一个重要的功能就是可以检测出run脚本中执行的程序是否正常工作,若发现其已经死掉,supervise将会重新执行run脚本,重新启动指定程序。这对于很多服务端程序来说是十分必要的,没有人愿意在深夜2点的时候从被窝里爬出来重新启动服务器。
下面是一个简单使用supervise的例子。
五、1)例子1
假定已经安装好daemontools,建立一个test目录,进入该目录
mkdir /temp1
cd /temp1
在该目录下写一个简单测试程序test.c:
编译test.c输出为test。
gcc -o test test1.c
编写一个脚本run,来执行test程序,以便supervise进行调用。
#!/bin/sh
echo "start test!"
./test
退到上级目录,执行 supervise temp1看看效果:
cd ..
supervise temp1
执行killall -9 test,杀死test进程,你会发现supervise会重新启动test进程。当然如果程序core dump,supervise同样会重新启动程序。
C代码 复制代码 收藏代码
#include
#include
int main(){
int ix = 0;
for(;; ix++){
printf("%d\n", ix);
sleep(1);
}
return 0;
}
注意:当停止再次启动supervise监控某目录时,会提示:
supervise: fatal: unable to acquire /service/test/supervise/lock: temporary failure
这时删除目录下的supervise重新监控即可。
2)例子2 (java)
命令: mkdir /service/test
cd /service/test
ll
vi demo.java
Java代码 复制代码 收藏代码
class demo{
public static void main(String[] args) throws Exception{
for(int i=0;;i++){
System.out.println("i="+i);
Thread.sleep(1000);
}
}
}
javac -d . demo.java
vi run
Xml代码 复制代码 收藏代码
#!/bin/sh
echo -e "start test";
exec java demo
chmod +x run
执行监控目录 :supervise /service/test
[终端打印出来标号]
再开启一个终端,查看正在执行这个命令的进程id,执行 ps -A
找到 java这个进程的id号,
执行 killall -9 java
看前一个终端,是不是打印又从新开始了,呵呵。这说明中断之后supervise又启动这个进程了
3)例子3
mkdir /tmp/test
cd /tmp/test
vi demo.java
[代码同例子2]
javac -d . demo.java
vi run
Java代码 复制代码 收藏代码
#!/bin/sh
echo -e "start test2";
exec java -classpath /tmp/test demo
chmod +x run
ln -s /tmp/test /service/test
ll /service
supervise /service/test
发现开始打印了,这时在另一个终端执行 killall -9 java ,则发现这个终端的打印又从新开始了,也就是杀掉进程之后立即又从新执行run了
4)实例4 监控tomcat启动
假如tomcat 在redhat的 /var/tomcat6
在/service目录下新建一个run文件,内容如下:
Java代码 复制代码 收藏代码
#!/bin/sh
TOMCAT_HOME=/var/tomcat6
exec ${TOMCAT_HOME}/bin/catalina.sh run
执行supervise /service
则发现tomcat启动了。
测试: 新打开一个终端,ps -ef |grep tomcat
找到tomcat的id,执行 kill -9 [tid]
杀掉了tomcat但在之前的终端窗口上却显示重新启动了tomcat。
【注】:好像用tomcat的./shutdown.sh命令不能使监控重启,出现异常,端口占用,可能是还没等tomcat关闭监控就执行了启动命令。
参考资料:1)官网:http://cr.yp.to/daemontools.html
supervise:系统进程监控管理器
可参考的文章(参考这篇文章可安装成功):
1、linux 安装supervise服务 :http://blog.csdn.net/xvshu/article/details/51792668
2、注意:run脚本没有任何后缀
一、工具supervise
Daemontools是一个包含了很多管理Unix服务的工具的软件包。其中最核心的工具是supervise,它的功能是监控一个指定的服务,当该服务进程消亡,则重新启动该进程。而要添加让supervise监控的服务非常容易,只需要添加一个被监控的服务的目录,在该目录中添加启动服务器的名字为run的脚本文件即可。
其中svscan工具是为指定的工作目录(缺省是/service/目录)下的所有子目录中的每一个子目录都启动一个supervise进程,最多可以启动多达1000个supervise进程(也就是工作目录下可以有多达1000个子目录)。其中每个子目录下都会有一个名为run的用来启动对应服务的脚本程序。Supervise会监控该服务,在服务消亡时使用run脚本来自动启动该服务。若svscan的工作目录下的子目录的sticky位被置位,则svscan将为该子目录启动两个supervise进程,一个监控子目录中的run对应的服务,另外一个监控子目录下的log子目录的记录服务,两者之间通过管道来相互联系。
Svscan每5秒钟检测一次子目录,若出现新的目录则为该目录启动supervise,若某个老的子目录对应的supervise退出,则重新启动它。
该软件包的所有工具的详细信息请参考在线文档。daemontools最经典的搭配是和lighttpd一起使用
二、安装
/pacakage目录(你可以创建任意目录,这里使用package只是为了保持与英文作者的一致):
mkdir -p /package
chmod 1755 /package
cd /package
下载daemontools-0.76.tar.gz到/package目录,解压该包。
http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar xvzf daemontools-0.76.tar.gz
cd admin/daemontools-0.76
编译并安装daemontools程序
package/install
【注意】:如果在安装过程中出现安装失败的提示,是因为daemontools 需要一个补丁daemontools-0.76.errno.patch,这个补丁在qmail包中有。或者修改daemontools 源代码来修补这个bug
(修改方法:在src下的conf-cc文件的第一行最后添加如下代码即可 -include /usr/include/errno.h
# vi src/conf-cc
在最后加上 -include /usr/include/errno.h
)
如果安装成功,你可以用下面命令确认:
# ps -ef | grep svscan
# man svscan
此时你查看一下inittab文件:
# cat /etc/inittab
会发现原来daemontools是使用init的方式来保护自己的:
SV:123456:respawn:/command/svscanboot
通过strace命令你能看到系统每隔五秒会核对一下服务:
# strace -p `pidof svscan`
四、使用supervise程序进行程序管理监控
supervise的执行命令是supervise Path ,其中Path 是指定路径,可以是相对路径,也可以是绝对路径。在Path路径下,必须有一个run的脚本,supervise调用的就是这个脚本,并监控管理该脚本中运行的程序。
supervise的一个重要的功能就是可以检测出run脚本中执行的程序是否正常工作,若发现其已经死掉,supervise将会重新执行run脚本,重新启动指定程序。这对于很多服务端程序来说是十分必要的,没有人愿意在深夜2点的时候从被窝里爬出来重新启动服务器。
下面是一个简单使用supervise的例子。
五、1)例子1
假定已经安装好daemontools,建立一个test目录,进入该目录
mkdir /temp1
cd /temp1
在该目录下写一个简单测试程序test.c:
编译test.c输出为test。
gcc -o test test1.c
编写一个脚本run,来执行test程序,以便supervise进行调用。
#!/bin/sh
echo "start test!"
./test
退到上级目录,执行 supervise temp1看看效果:
cd ..
supervise temp1
执行killall -9 test,杀死test进程,你会发现supervise会重新启动test进程。当然如果程序core dump,supervise同样会重新启动程序。
C代码 复制代码 收藏代码
#include
#include
int main(){
int ix = 0;
for(;; ix++){
printf("%d\n", ix);
sleep(1);
}
return 0;
}
注意:当停止再次启动supervise监控某目录时,会提示:
supervise: fatal: unable to acquire /service/test/supervise/lock: temporary failure
这时删除目录下的supervise重新监控即可。
2)例子2 (java)
命令: mkdir /service/test
cd /service/test
ll
vi demo.java
Java代码 复制代码 收藏代码
class demo{
public static void main(String[] args) throws Exception{
for(int i=0;;i++){
System.out.println("i="+i);
Thread.sleep(1000);
}
}
}
javac -d . demo.java
vi run
Xml代码 复制代码 收藏代码
#!/bin/sh
echo -e "start test";
exec java demo
chmod +x run
执行监控目录 :supervise /service/test
[终端打印出来标号]
再开启一个终端,查看正在执行这个命令的进程id,执行 ps -A
找到 java这个进程的id号,
执行 killall -9 java
看前一个终端,是不是打印又从新开始了,呵呵。这说明中断之后supervise又启动这个进程了
3)例子3
mkdir /tmp/test
cd /tmp/test
vi demo.java
[代码同例子2]
javac -d . demo.java
vi run
Java代码 复制代码 收藏代码
#!/bin/sh
echo -e "start test2";
exec java -classpath /tmp/test demo
chmod +x run
ln -s /tmp/test /service/test
ll /service
supervise /service/test
发现开始打印了,这时在另一个终端执行 killall -9 java ,则发现这个终端的打印又从新开始了,也就是杀掉进程之后立即又从新执行run了
4)实例4 监控tomcat启动
假如tomcat 在redhat的 /var/tomcat6
在/service目录下新建一个run文件,内容如下:
Java代码 复制代码 收藏代码
#!/bin/sh
TOMCAT_HOME=/var/tomcat6
exec ${TOMCAT_HOME}/bin/catalina.sh run
执行supervise /service
则发现tomcat启动了。
测试: 新打开一个终端,ps -ef |grep tomcat
找到tomcat的id,执行 kill -9 [tid]
杀掉了tomcat但在之前的终端窗口上却显示重新启动了tomcat。
【注】:好像用tomcat的./shutdown.sh命令不能使监控重启,出现异常,端口占用,可能是还没等tomcat关闭监控就执行了启动命令。
参考资料:1)官网:http://cr.yp.to/daemontools.html
发表评论
-
Linux下查看进程的带宽使用情况
2018-12-29 20:13 3608NetHogs 介绍 NetHogs 是 Linux 平台下 ... -
分布式系统调用链监控
2018-01-12 17:02 3029关键字:分布式系统调 ... -
教你认识Linux内存管理方式,分析Swap被程序占用情况
2017-05-20 19:06 11713关键字:教你认识Linux内存管理方式,分析Swap被程序占用 ... -
阿里云内网和公共NTP服务器(网络时间协议-时间同步服务)
2017-05-12 16:20 9937关键字:阿里云内网和公共NTP服务器(网络时间协议-时间同步服 ... -
nginx反向代理无法获取带下划线的 HTTP Header解决办法
2017-04-27 10:20 8535关键字: 问题描述: ... -
微信高并发资金交易系统设计方案——百亿红包背后的技术支撑
2017-02-15 12:10 15254推荐综合架构交流群:JAVA开发高级群 点击入群!!! ... -
临时博客
2015-09-01 09:54 3001、分页查询 {"success":tru ... -
zookeeper 的监控工具
2015-07-21 15:03 14369zookeeper 的监控工具 公司很多产品会 ... -
Nginx/LVS/HAProxy负载均衡优缺点大总结
2015-07-02 22:38 903关键字:Nginx/LVS/HAProxy ... -
win7 64位的数据源(ODBC)配置问题
2015-01-20 16:36 1026关键字:win7 64位的数据源(ODBC)配置问题 ... -
aaaaaaaaaaaaaaaaaa
2014-10-16 16:58 0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ... -
各种品牌类型的主板 电脑开机启动选项快捷键
2014-04-24 11:57 1616关键字:各种品牌类型的主板 电脑开机启动选项快捷键 组装 ... -
WinDebug+虚拟机---调试驱动的配置
2014-02-28 13:47 3216关键字:WinDebug+虚拟机---调试驱动的配置 ... -
Linux下Java环境的安装和配置
2011-07-08 22:30 1219关键字:Linux下Java环境的安装和配置 一、下载JDK ... -
Linux CentOS系统中文乱码问题解决方案
2011-07-07 14:03 1046关键字:Linux CentOS 5.3系统中文乱码问题 ... -
CentOS yum安装Apache + PHP + MySQL + Tomcat
2011-06-17 17:33 2159关键字:CentOS yum安装Apache + PHP + ... -
Word2007不能同时打开两份文档
2011-05-12 13:17 1393[问题症状]: 1、无法同时打开多个文件; 2 ... -
控制面板 任务计划 定期任务策略
2011-04-03 04:47 895在控制面板 》任务计划 里可以完成你的定期计划。 -
windows系统优化及提速
2011-03-21 21:17 1410<!-- google_ad_client = &qu ... -
SSH软件访问AIX系统及实时监控某个文件
2011-02-23 12:58 1562关键字:SSH软件访问AIX系统 说明:如果是内网本机无法访问 ...
相关推荐
NULL 博文链接:https://yangzb.iteye.com/blog/788946
supervise是daemontools的一个工具,可以用来监控管理unix下的应用程序运行情况,在应用程序出现异常时,supervise可以重新启动指定程序.
supervise 二进制文件,运行命令 ./supervise -f 要守护的程序 -p 守护信息存储位置
您可以使用`supervise'包裹一个子进程,这又会派生出更多的子进程,并以任意配置和深度将它们包裹在`supervise'中。行为当执行监督时,它期望具有stdin,stdout和stderr。 进一步希望监督者已经启动了一些子进程...
和linux下视频服务器交互,实时监控,此工程在windows下SDL显示。
对运行主机的进程进行监控,当进程结束时,根据用户配置,程序可以气泡方式.邮件方式进行重复或者单次提示.还可以配置当进程结束时.运行指定程序.
实时日志监控系统 目标: 实现对系统日志的实时监控,快速获取系统运行时异常日志,并以邮件的方式通知运维人员 关键技术: flume、rocketmq、jstorm、hbase 整体架构图: 实时日志监控系统全文共3页,当前为第1页。...
3 supervise->监控一个服务。它在发现目标服务dies的时候启动服务或重启服务器。创建一个新服务的监控非常简单,创建一个目录,并且在此目录下写一个名称为'run'的脚本,在这个脚本里定义启动目标服务的命令即可。 4...
supervise_learning
绝缘监测模块将监测到的对地电压值和对地电阻值通过RS485总线发送给综合监控模块,并由综合监控模块作出相应处理。其原理如图4所示。 图4 绝缘监测模块原理框图 Fig.4 Diagram of the module of insulation ...
heartbeat用户linux系统做双机classter
python库。 资源全名:supervise_api-0.5.0.tar.gz
资源来自pypi官网。 资源全名:supervise_api-0.6.0.tar.gz
在kapo下执行程序时,将启动使用JSON的HTTP服务器,并将进程状态报告给请求它的人。 该服务器将正确响应HEAD请求。 打开的插座将用作指示状态。 主体是反映流程状态的JSON文档。 如果可以将套接字打开为与解析JSON...
study_supervise
系统集商品进销存、人员收支费用、人员工资和总会计核算为一体的简单通用的企业管理系统,即“Enterprise Currency Supervise System”简称ECSS。 软件架构:VFP9+MSSQL2000。 其他软件:Microsoft Office 2003...
This folder contains Matlab programs for a toolbox for supervised speech separation using deep neural networks (DNNs).zip
The Lottery Tickets Hypothesis for Supervised and Self-Supervised Pre-Training in Computer Vision Models
Isodata supervise clasification
, 在此存储库中,我们将介绍5种主要的监督学习算法。 该文档取自。 我们的贡献在于,我们使用Python 3.X编程语言生成了源代码。五(05)个主要的监督学习算法。 1-线性回归: 和。 2- 。 3-分类和回归树。 4-K最近...