Dandy Now!
  • [Linux] nohup을 이용한 jar 무중단 배포 및 log 확인 방법
    2024년 04월 08일 18시 15분 56초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    1. 실행 중인 자바 프로세스 확인

    root@(생략):/# ps -ef | grep java
    
    root@(생략):/# kill -9 <ProcessID>	# 프로세스가 실행중이라면 제거

     

    2. nohup으로 jar 실행(log 생성)

    root@(생략):/# nohup java -jar 파일명.jar --spring.profiles.active=dev 2>&1 &	# "--spring.profiles.active=dev" dev모드로 실하는 옵션, 상황에 따라 생략해도 됨

     

    3. log 실시간 확인

    root@(생략):/# tail -f nohup.out

     

    4. nohup으로 jar 실행(log 생성하지 않음)

    root@(생략):/# nohup java -jar 파일명.jar --spring.profiles.active=dev > /dev/null 2>&1 &	# "> /dev/null"로 log 생성하지 않음

     


    2024-12-05 추가

    서버가 재부팅되었을 때 자동으로 jar를 구동해야하는 경우에는 nohup을 이용한 방식으로는 곤란하다. 아래의 내용은 서버 재부팅 후 자동으로 jar를 구동하는 권장되는 방법이다.

    ※ 서버 재부팅 후 자동 구동

    1. 서비스 파일 생성

    sudo nano /etc/systemd/system/myapp.service
    • 다음의 내용을 입력한다.
    [Unit]
    Description=My Java Application
    After=network.target
    
    [Service]
    Type=simple
    User=ubuntu
    WorkingDirectory=/home/ubuntu/backend
    ExecStart=/usr/bin/java -jar /home/ubuntu/backend/example-0.0.1-SNAPSHOT.jar
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
    • 주요 속성 설명
      • User: 실행할 사용자 계정명
      • WorkingDirectory: JAR 파일이 있는 디렉토리 경로
      • ExecStart: 실행할 명령어(Java 실행 경로와 JAR 파일 경로를 지정). ExecStart=/usr/bin/java -jar 다음에 오는 경로를 자신의 상황에 맞게 지정하면 됨

     

    2. 서비스 활성화 및 시작

    sudo systemctl daemon-reload
    sudo systemctl enable myapp.service
    sudo systemctl start myapp.service

     

    3. 서비스 상태 확인

    sudo systemctl status myapp.service

     

    4. 서비스 중지, 시작, 재시작

    sudo systemctl stop myapp.service   # 서비스 중지
    sudo systemctl start myapp.service  # 서비스 시작
    sudo systemctl restart myapp.service # 서비스 재시작
    728x90
    반응형
    댓글