Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux中运行Java进程作为服务_Java_Linux_Service_Rhel_Tcsh - Fatal编程技术网

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

在Linux中运行Java进程作为服务,java,linux,service,rhel,tcsh,Java,Linux,Service,Rhel,Tcsh,我需要在(Red Hat 6.4)Linux中作为服务运行Java进程(它需要在启动时运行并保持正常)。我让它大部分工作,除了它在“服务配置”窗口中的状态不正确 为了举例说明,我制作了一个简单的Java程序: package service; public class JavaService { public static void main(String args[]){ System.out.println("Starting Java-Service");

我需要在(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\u java\u 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。Tomcat使用它作为服务启动。

哪个用户正在启动作业,哪些用户正在单击停止?root用户启动作业,root用户停止作业