加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在Linux中将Java进程作为服务运行

发布时间:2020-12-14 02:13:24 所属栏目:Linux 来源:网络整理
导读:我需要在(Red Hat 6.4) Linux中运行Java进程作为服务(它需要在启动时运行并保持运行).我主要使用它,除了它在“服务配置”窗口中似乎没有正确的状态. 为了说明,我做了一个简单的Java程序: package service;public class JavaService { public static void ma
我需要在(Red Hat 6.4) Linux中运行Java进程作为服务(它需要在启动时运行并保持运行).我主要使用它,除了它在“服务配置”窗口中似乎没有正确的状态.

为了说明,我做了一个简单的Java程序:

package service;

public class JavaService {

    public static void main(String args[]){

        System.out.println("Starting Java-Service");
        while(true){

            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            System.out.println("Java-Service is still running..");
        }
    }
}

我震惊了,把它放在这个位置:/ opt / service / lib

然后,我创建了这个脚本:/ opt / service / bin / run_java_service

#!/bin/tcsh
#
# chkconfig: 2345 80 30
# description: java-service Service

setenv JAVA_SERVICE_HOME /opt/service
setenv CLASSPATH $JAVA_SERVICE_HOME/lib/JavaService.jar

setenv SERVICE_PID  `ps aux | grep JavaService | grep -v grep | awk '{print $2}'`;

if ( (stop == $1  || restart == $1)) then
    echo "java-service stop";
    kill -9 $SERVICE_PID
    setenv SERVICE_PID
endif

if ( start == $1 || restart == $1 ) then
    if($SERVICE_PID) then
        echo "java-service is already running"
    else
        echo "java-service start";
        java service.JavaService&
    endif
endif

if (status == $1) then
    if($SERVICE_PID) then
        echo "java-service (pid $SERVICE_PID) is running...";
    else
        echo "java-service is stopped";
    endif
endif

然后我在/etc/rc.d/init.d目录中创建了一个符号链接,并将其添加到chkconfig:

sudo ln –s /opt/service/bin/run_java_service /etc/rc.d/init.d/java-service
sudo chkconfig --add java-service

此时,这样的命令可以从命令行按预期工作:

sudo service java-service stop
sudo service java-service start
sudo service java-service status

问题是“服务配置”对话框中的状态不正确.例如,在此屏幕截图中,我点击了“停止按钮”,它仍显示为“已插入”.

我错过了哪一块拼图?

解决方法

您可以尝试从apache使用 jsvc. Tomcat使用它作为服务启动.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读