Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3159930
  • 博文数量: 797
  • 博客积分: 10134
  • 博客等级: 上将
  • 技术积分: 9335
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-22 22:57
个人简介

1

文章分类

全部博文(797)

文章存档

2022年(1)

2021年(2)

2017年(2)

2016年(1)

2015年(4)

2014年(1)

2013年(6)

2012年(6)

2011年(10)

2010年(26)

2009年(63)

2008年(61)

2007年(51)

2006年(563)

我的朋友

分类: LINUX

2009-07-19 20:26:41

 
测试通过:
  //普通程序守护进程方法
  //针对java此地址提供3种方法
 
以java应用程序为例,打包为tianlong.jar,程序入口为tianlong.QueueTest。
 
在tianlong目录下:
mkdir bin conf lib 创建3个目录

在linux的/opt下建立tianlong目录,复制tianlong.jar到/opt/tianlong/lib目录下。

1、下载Java Service Wrapper(目前版本wrapper-linux-x86-32-3.3.2), 解压。
下载Community版本
 
解压出来:
复制src\bin\sh.script.in/opt/tianlong/bin目录,重命名为QueueTest

复制bin目录下的wrapper文件/opt/tianlong/bin目录

复制src\conf\wrapper.conf.in/opt/tianlong/conf目录,重命名为wrapper.conf

复制lib目录下3个文件到/opt/tianlong/lib目录

wrapper.so
wrapper.jar
wrappertest.jar

2、修改/opt/tianlong/bin/QueueTest文件
APP_NAME="QueueTest" //注意这里,这里的应用服务名称应该与第1步的/opt/tianlong/bin里面的QueueTest名字相同
APP_LONG_NAME="QueueTest Application Server"
WRAPPER_CMD="./wrapper" //这里的路径要写正确,这里是对应了/opt/tianlong/bin/wrapper这个文件
WRAPPER_CONF="../conf/wrapper.conf" //这里的路径要写正确,这里是对应了/opt/tianlong/conf/wrapper.conf这个文件
赋予执行权限
chmod 775 /opt/testapp/bin/wrapper

3、修改/opt/tianlong/conf/wrapper.conf文件
wrapper.java.command=/usr/java/jdk1.6.0_07/bin/java //这里是写java的安装路径
使用WrapperStartStopApp,这样可以通过命令带start/stop来启动/停止程序。
wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperStartStopApp
#这里添加你用到的jar包文件,从1..n你自己全写上吧,不过wrapper是必须的
wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=../lib/tianlong.jar     //这里表示将打包好的tianlong.jar放在/opt/tianlong/lib这个文件夹中
wrapper.java.classpath.3=../lib/asterisk-java-0.3.jar
wrapper.java.classpath.4=../lib/mysql-connector-java-5.1.6-bin.jar
wrapper.java.classpath.5=/usr/java/jdk1.6.0_07/lib/dt.jar
wrapper.java.classpath.6=/usr/java/jdk1.6.0_07/lib/tools.jar
wrapper.java.classpath.7=../cofig.properties //这个是应用程序用到的配置文件。如果使用的应用程序需要用到配置,就需要把这个文件包含进来
wrapper.java.classpath.8=../              //添加tianlong根目录应用于非jar包在根目录xx.class程序

wrapper.java.library.path.1=../lib //这里是表示wrapper使用到的jar包的路径,一般默认即可,绝对路径是:/opt/tianlong/lib
#这个就是你自己可执行程序的主类(MainClass),一般来说,就是包含public static void main的那个类
wrapper.app.parameter.1=tianlong.QueueTest
wrapper.app.parameter.2=1
wrapper.app.parameter.3=true
wrapper.app.parameter.4=tianlong.QueueTest
wrapper.app.parameter.5=true
wrapper.app.parameter.6=1
wrapper.app.parameter.7=stop
# 设置log文件最大值
wrapper.logfile.maxsize=5
#设置log文件最多个数
wrapper.logfile.maxfiles=10
设置允许服务自动启动  针对win
wrapper.ntservice.starttype=AUTO_START

4、让QueueTest开机自动运行方法1:
ln -s /opt/tianlong/bin/QueueTest   /etc/init.d/QueueTest  
ln -s /opt/tianlong/bin/QueueTest /etc/rc0.d/QueueTest  
ln -s /opt/tianlong/bin/QueueTest /etc/rc1.d/QueueTest  
ln -s /opt/tianlong/bin/QueueTest /etc/rc2.d/QueueTest  
ln -s /opt/tianlong/bin/QueueTest /etc/rc3.d/QueueTest  
ln -s /opt/tianlong/bin/QueueTest /etc/rc4.d/QueueTest  
ln -s /opt/tianlong/bin/QueueTest /etc/rc5.d/QueueTest  
ln -s /opt/tianlong/bin/QueueTest /etc/rc6.d/QueueTest
 
让QueueTest开机自动运行方法2:(这里我用centos系统采用chkconfig方式管理)
vi bin/QueueTest 第二行开始增加
#kconfig: 3 98 15      //必须
#description:Java Ds   //必须
保存退出
ln -s /opt/tianlong/bin/QueueTest /etc/rc.d/init.d/QueueTest
chkconfig --add QueueTest
chkconfig --level 35 QueueTest on

5、测试 执行命令:service QueueTest start|stop|restart|status 程序运行时,
Java Service Wrapper在/opt/tianlong/bin/目录下产生wrapper.log日志(日志路径可在conf/wrapper.conf里修改)

STATUS | wrapper   | 2009/02/25 17:04:01 | --> Wrapper Started as Daemon
STATUS | wrapper   | 2009/02/25 17:04:01 | Java Service Wrapper Community Edition 3.3.2
STATUS | wrapper   | 2009/02/25 17:04:01 | Copyright (C) 1999-2009 Tanuki Software, Ltd.   All Rights Reserved.
STATUS | wrapper   | 2009/02/25 17:04:01 |    
STATUS | wrapper   | 2009/02/25 17:04:01 |
STATUS | wrapper   | 2009/02/25 17:04:01 | Launching a JVM...
INFO | jvm 1 | 2009/02/25 17:04:02 | WrapperManager: Initializing...

出现上面这个就表示已经配置成功了。如果配置有错误的话,在wrapper.log里面会有提示。
同时,如果程序配置成功的并且启动的话,在/opt/tianlong/bin里面会有一个QueueTest.pid。

附目录结构
/opt/tianlong/
cofig.properties
/opt/tianlong/bin
                | QueueTest
                | wrapper
                | wrapper.log(程序运行时自动产生)
/opt/tianlong/conf
            | wrapper.conf
/opt/tianlong/lib
            | libwrapper.so
            | wrapper.jar
            | tianlong.jar
            | mysql-connector-java-5.1.6-bin.jar
            | asterisk-java-0.3.jar
 
---------------------------------------------------------------------------
用于非java程序通用守护进程代码:
 

#!/bin/sh
#-----------------------------------
# 函数: CheckProcess
# 功能: 检查一个进程是否存在
# 参数: $1 --- 要检查的进程名称
# 返回: 如果存在返回0, 否则返回1.
#---------------------------------------
CheckProcess()
{
# 检查输入的参数是否有效
if [ "$1" = "" ];
then
echo "input empty"
return 1
fi
#$PROCESS_NUM获取指定进程名的数目,为1返回0,表示正常,不为1返回1,表示有错误,需要重新启动
sleep 3
PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`
if [ $PROCESS_NUM -eq 1 ];
then
return 0
else
return 1
fi
}
# 检查ds实例是否已经存在
while [ 1 ] ;
do CheckProcess "ds"
CheckQQ_RET=$?
if [ $CheckQQ_RET -eq 1 ];
then
sleep 10
# echo "ds need to restart"
killall 程序名字
路径+程序名 &

fi
sleep 3
done &

在centos,fC4

ps -ef 无效改ps -e 好了

/etc/rc.local

nohup xxxx/check.sh &

不同用户运行:
su - username -c "nohup xxxx/check.sh &"
sudo -u username xxxx/check.sh &   // 如果不生效需修改visudo添加权限

 
 
阅读(3009) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~