簡體   English   中英

在Linux中將Java進程作為服務運行

[英]Running Java process as Service in Linux

我需要在(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使用它作為服務啟動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM