"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Linux에서 Java 애플리케이션을 서비스로 실행하려면 어떻게해야합니까?

Linux에서 Java 애플리케이션을 서비스로 실행하려면 어떻게해야합니까?

2025-03-23에 게시되었습니다
검색:521

How do I run Java applications as services on Linux?

서비스의 필요성

는 수동으로 또는 rc.local

와 같은 스크립트를 통해 수동으로 또는 스크립트를 통해 시작될 수 있습니다. 서버 재시작과 독립적 인 응용 프로그램을 관리하려면 서비스로 실행하는 것을 고려하십시오.

서비스 스크립트 생성

#!/bin/sh
SERVICE_NAME=your_service_name
PATH_TO_JAR=full_path_to_jar_file
PID_PATH_NAME=/tmp/your_service_name-pid
case $1 in
    start)
        echo "Starting $SERVICE_NAME ..."

        # Check if service is already running
        if [ ! -f $PID_PATH_NAME ]; then

            # Execute Java command in the background (daemonize)
            nohup java -jar $PATH_TO_JAR > /tmp/service_name.log 2>&1 &

            # Store PID to track process
            echo $! > $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is already running ..."
        fi
    ;;
    stop)
        # Check if PID file exists to ensure service is running
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME)
            echo "$SERVICE_NAME stopping ..."

            # Kill process
            kill $PID
            echo "$SERVICE_NAME stopped ..."

            # Remove PID file
            rm $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    restart)
        # Stop service
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME)
            echo "$SERVICE_NAME stopping ..."
            kill $PID
            echo "$SERVICE_NAME stopped ..."
            rm $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi

        # Start service
        echo "$SERVICE_NAME starting ..."
        nohup java -jar $PATH_TO_JAR > /tmp/service_name.log 2>&1 &
        echo $! > $PID_PATH_NAME
        echo "$SERVICE_NAME started ..."
    ;;
esac 

서비스 스크립트를 작성하려면 다음 단계를 따르십시오. service_name = Your_Service_name path_to_jar = full_path_to_jar_file pid_path_name =/tmp/your_service_name-pid 사례 $ 1 인치 시작) echo "$ service_name 시작 ..." # 서비스가 이미 실행 중인지 확인하십시오 만약에 [ ! -f $ pid_path_name]; 그 다음에 # 백그라운드에서 Java 명령을 실행합니다 (Daemonize) nohup java -jar $ path_to_jar & gt; /tmp/service_name.log 2 & gt; & amp; 1 & amp; # PID를 저장하여 프로세스를 추적하십시오 에코 $! & gt; $ pid_path_name echo "$ service_name 시작 ..." 또 다른 echo "$ service_name은 이미 실행 중입니다 ..." fi ;; 멈추다) # 서비스가 실행되는지 확인하기 위해 PID 파일이 있는지 확인하십시오. [-f $ pid_path_name]; 그 다음에 pid = $ (cat $ pid_path_name) echo "$ service_name 중지 ..." # 킬 프로세스 킬 $ pid echo "$ service_name 중지 ..." # PID 파일을 제거합니다 rm $ pid_path_name 또 다른 echo "$ service_name이 실행되지 않습니다 ..." fi ;; 다시 시작) # 서비스 중지 [-f $ pid_path_name]; 그 다음에 pid = $ (cat $ pid_path_name) echo "$ service_name 중지 ..." 킬 $ pid echo "$ service_name 중지 ..." rm $ pid_path_name 또 다른 echo "$ service_name이 실행되지 않습니다 ..." fi # 서비스 시작 echo "$ service_name 시작 ..." nohup java -jar $ path_to_jar & gt; /tmp/service_name.log 2 & gt; & amp; 1 & amp; 에코 $! & gt; $ pid_path_name echo "$ service_name 시작 ..." ;; esac

설치

".sh"확장자 (예 : "myservice.sh")가있는 파일로 위의 스크립트를 저장합니다. (예를 들어, /etc/init.d 또는 /lib/systemd/systemd/system) .=&&&&&&ch&&&&ch&&&&&&ch실 서비스를 관리하기 위해 다음 명령을 사용하여 다음 명령을 사용합니다. myservice

stop : /etc/init.d/myservice stop 또는 systemctl myservice stop

    retart : /etc/init.d/myservice restart 또는 systemctl은 myservice
  • [&] [&]
  • Java 응용 프로그램을 Linux에서 서비스로 실행하기위한 포괄적 인 솔루션을 제공하여 효율적인 관리 및 유지 관리에 필요한 제어 및 유연성을 제공합니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3