测试通过:

以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), 解压。

http://wrapper.tanukisoftware.org/ 下载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 |    http://wrapper.tanukisoftware.org

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添加权限

java wrapper linux_Java Service Wrapper linux 服务 java 自启动相关推荐

  1. java windows wrapper_Java Service Wrapper 发布Java程序为Windows服务

    现在目前只要32位有免费的,64位免费版目前还没有做出来.官网上(社区)那一列是免费的. 1.先把你的项目用MANIFEST.MF打成jar包,例如bb.jar.新建目录,例如:dist,放在D盘下面 ...

  2. java windows wrapper_Java Service Wrapper 使用(windows)

    1       简介 最近项目中需要做一个Windows系统服务,记录一下使用过程. Java Service Wrapper 可以将Java程序包装成系统服务,这样就可以随着系统的运行而自动运行.J ...

  3. java windows wrapper_Java Service Wrapper 发布windows后台程序的方法

    Java Service Wrapper发布可执行jar文件的方法 通过摸索,终于将我的程序转换成windows后台服务程序了,实现股票成交明细数据自动定时下载,很爽!现将心得要点记录如下: 2.建立 ...

  4. linux获取java环境变量的值,linux获取java环境变量的值

    linux获取java环境变量的值 [2021-02-11 00:17:01]  简介: 服务器 这篇文章主要为大家展示了linux环境下怎么配置环境变量,内容简而易懂,希望大家可以学习一下,学习完之 ...

  5. linux中.service文件,linux 服务注册 service文件 在service文件中设置变量和环境变量...

    [Unit] Description=  #服务描述 After=syslog.target     #服务启动依赖 [Service] Type=forking          #服务启动类型 可 ...

  6. linux服务开机自启动

    一.创建start.sh脚本 1.创建脚本 vim /opt/sjt/admin/start.sh 2.脚本内容 #!/bin/bash if [ $# -eq 1 ];then sleep $1 f ...

  7. linux服务关闭自启动

    众所周知,linux服务是由/lib/systemd/system/的service服务控制启动的 那便可以用脚本控制service服务,让他关闭了就再次启动 脚本如下 代码直接用直接脚本做简单修正 ...

  8. java jni linux_java jni实现linux环境下绑定硬件的License

    由于系统运行在Linux环境中,该License绑定服务器的cpuid和mac等信息,而java实现起来不太方便所以就利用了JNI 问题及解决方法: 1.System.loadLibrary(&quo ...

  9. java本地可以发到linux不行,java 使用 ftp 在windows环境下可以正常下载文件,在linux环境下不行...

    windows环境下使用 public static void dowmloadFtpWindos(String fileUuid, HttpServletRequest request,HttpSe ...

最新文章

  1. 如何在StackOverflow上获得第一个标签徽章-以及为什么它很重要。
  2. JavaSE入门学习50:多线程编程(一)
  3. Boost:使用std :: test进行boost:array的测试
  4. udp怎么保证不丢包_在 Flink 算子中使用多线程如何保证不丢数据?
  5. ​win7下安装sourcetree
  6. WordPress主题导航源码webstackpro-支持个人自定义本地保存
  7. python基础 实战作业 ---Excel基本读写与数据处理
  8. js原型和原型链_初识JS原型/原型链/原型继承
  9. 智乃买瓜(another version)(DP+逆向思维)
  10. n个数中的最大值和最小值
  11. STM32定时器周期任务函数编写
  12. word文档被锁定,无法编辑怎么办?(…
  13. 年度盘点:20+主流数据库重大更新及技术要点回顾
  14. 行转列 和 链接查询 
  15. 求π的值C++--递归求阶乘、浮点数精度控制技巧
  16. 云计算的定义是什么?
  17. 太香了!墙裂推荐 6 个Python数据分析神器!!
  18. 1.1、云计算HCIP服务器基础知识
  19. 为什么汉语不能用来编程?
  20. linux输入rz命令后出现receive.**B0100000023be50,没有文件弹出框

热门文章

  1. 2018年10月28日宁波dotnet社区活动回顾及下次活动预告
  2. 【活动(广州)】office365的开发者训练营
  3. .NET Core中的CSV解析库
  4. .NET Core 2.0 的dll实时更新、https、依赖包变更问题及解决
  5. vi/vim 三种模式及命令 (简单粗暴,轻松搞懂)
  6. java开发保险案例_Java实现双保险线程的示例代码
  7. [转]一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
  8. 【CASS精品教程】CASS9.1等高线的绘制完整案例教程
  9. 【ArcGIS遇上Python】从入门到精通系列之第二章:ArcGIS Python基本语法基础速递
  10. 西北冬日的校园很静谧,却不失韵味,因为有我们美好的青春!