让Java程序作为linux的Daemon后台运行

本文介绍如何使用JavaServiceWrapper工具将Java程序配置为Linux系统服务,实现开机自动后台运行。通过详细步骤指导完成从目录结构搭建到配置文件修改的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为需要对网络环境进行监控,做了个Java程序在linux服务器上运行。但是每次重新启动的时候都要手动的运行,这样就不太现实。所以想到把Java程序做成像Windows的系统服务那样,开机就会自动在后台运行。以前使用过一个工具http://javaservice.objectweb.org/,可以把Java程序注册成为Windows的系统服务,而且使用起来很简单,但是遗憾的是该工具不能注册linux的后台服务。所以不得不另外寻找工具。

 

   最后找到了JavaService Wrapper(http://wrapper.tanukisoftware.org/doc/english/introduction.html),该工具能在很多中平台下面注册为系统服务(查看支持平台)。该工具使用方法有三种模式,我用的是第一种WrapperSimpleApp帮助类,另外的两种方式都需要在原来的程序上进行适当的编码。下面就用我的程序NetWatchDog为例子说明下大概的配置步骤。(其实文档中已经用Jboss进行了演示)

 

1.建立一个目录名为NetWatchDog,并在该目录下建立bin,lib,conf,logs目录。以下把NetWatchDog目录称为$DOG_HOME。

2.把下载来的文件解压,把$WRAPPER_HOME/bin/wrapper,$WRAPPER_HOME/src/bin/sh.script.in文件copy到$DOG_HOME/bin目录中。

3.把sh.script.in文件该名为你的服务名称,这里改为NetWatchDog。

4.编辑NetWatchDog,把Application的相关信息改为如下:

APP_NAME="NetWatchDog"
APP_LONG_NAME="NetWatchDog Application"

5.把你的程序的打包成jar文件,拷贝到$DOG_HOME/lib目录下,并把$WRAPPER_HOME/lib/libwrapper.so,$WRAPPER_HOME/lib/wrapper.jar文件也拷贝到$DOG_HOME/lib目录下面。

6.这步比较重要是成败的关键,把$WRAPPER_HOME/conf/wrapper.conf文件拷贝到$DOG_HOME/conf目录下(文档上面说的是wrapper.conf.in文件,但是我下载来的文件就是wrapper.conf,所以步需要改名的)。

7.编辑wrapper.conf文件:

#java命令的位置

wrapper.java.command=%JAVA_HOME%/bin/java

#wrapper的主类

wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

#java classpath

wrapper.java.classpath.1=../lib/wrapper.jar
wrapper.java.classpath.2=%JAVA_HOME%/jre/lib/ext/log4j-1.2.13.jar
wrapper.java.classpath.3=%JAVA_HOME%/jre/lib/ext/activation.jar
wrapper.java.classpath.4=%JAVA_HOME%/jre/lib/ext/commons-email-1.0.jar
wrapper.java.classpath.5=%JAVA_HOME%/jre/lib/ext/mail.jar
wrapper.java.classpath.6=../lib/NetWatchDog.jar
#你的程序的主类,将作为wrapper的参数

wrapper.app.parameter.1=qiya.deng.main.Main

8.这样基本就大功告成了,现在可以运行命令./NetWatchDog  start,如果提示权限不够就用chmod 755 NetWatchDog命令改变权限。如果没出现错误提示,这样基本上就正确了。
另外Windwos版本可以参考:http://blog.chinaunix.com/u/1677/?u=http://blog.chinaunix.com/u/1677/showart.php?id=67084

Linux系统中,后台运行Jetty程序可以通过以下几种方法实现: ### 方法一:使用`nohup`命令 `nohup`命令可以在退出终端后继续运行程序。 ```bash nohup java -jar jetty.jar > jetty.log 2>&1 & ``` - `nohup`:忽略挂起信号。 - `java -jar jetty.jar`:启动Jetty程序。 - `> jetty.log`:将标准输出重定向到`jetty.log`文件。 - `2>&1`:将标准错误重定向到标准输出。 - `&`:将命令放到后台执行。 ### 方法二:使用`screen`命令 `screen`命令可以在后台创建一个会话,并在其中运行程序。 ```bash screen -S jetty java -jar jetty.jar ``` - `screen -S jetty`:创建一个名为`jetty`的会话。 - `java -jar jetty.jar`:在会话中启动Jetty程序。 要退出`screen`会话但不停止程序,可以按`Ctrl+A`,然后按`D`。 ### 方法三:使用`systemd`服务 创建一个`systemd`服务文件,以便通过`systemctl`命令管理Jetty程序。 1. 创建服务文件: ```bash sudo nano /etc/systemd/system/jetty.service ``` 2. 在文件中添加以下内容: ```ini [Unit] Description=Jetty Server After=network.target [Service] User=your_username ExecStart=/usr/bin/java -jar /path/to/jetty.jar SuccessExitStatus=143 Restart=always [Install] WantedBy=multi-user.target ``` 3. 保存并退出编辑器。 4. 重新加载`systemd`配置: ```bash sudo systemctl daemon-reload ``` 5. 启动Jetty服务: ```bash sudo systemctl start jetty ``` 6. 设置Jetty服务开机自启: ```bash sudo systemctl enable jetty ``` ### 方法四:使用`tmux`命令 `tmux`命令类似于`screen`,也可以在后台创建一个会话。 ```bash tmux new -s jetty java -jar jetty.jar ``` 要退出`tmux`会话但不停止程序,可以按`Ctrl+B`,然后按`D`。 通过以上几种方法,你可以在Linux系统中后台运行Jetty程序
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值