윈도우 서버에서 jar 파일 백그라운드 실행하기(+ 배치 파일 cmd 닫는 방법)
해당 포스팅은 윈도우 서버에서 jar 파일을 백그라운드로 실행하는 동작을 배치 파일(.bat)으로 만들어 사용해 보며 정리한 내용입니다.
java 명령어로 실행할 경우
윈도우 서버에서 계속 동작해야 하는 Java 프로그램을 이미지와 같이 'java -jar [jar 파일명].jar' 명령어를 통해 실행하는 경우, 실행 이후 cmd(명령 프롬프트) 창을 닫으면 실행한 프로그램도 함께 종료되어 버리는데요.
이런 경우 리눅스 서버에서는 'nohup' 명령어를 통해 jar 파일을 백그라운드로 실행시킬 수 있는 반면, 윈도우 서버에서는 'javaw' 명령어를 통해 프로그램을 백그라운드로 실행시킬 수 있습니다.
javaw 명령어로 실행할 경우
> [jdk/bin/javaw 까지의 경로] -jar [jar 파일명].jar
> jdk-11.0.8.10₩bin₩javaw -jar demo.jar
'javaw'는 'java' 명령어처럼 Java 프로그램을 실행시킬 때 사용되는 명령어지만, java와는 다르게 실행되는 프로그램에 대해 콘솔에서 입출력(및 오류)을 제어할 필요가 없는 경우 주로 사용됩니다.
javaw 명령어를 통해 실행시킨 프로그램은 백그라운드로 동작한다는 특징이 있으며, 때문에 javaw 명령어를 통해 jar 파일을 실행시킨 뒤 cmd(명령 프롬프트) 창을 닫아도 해당 프로그램은 계속해서 동작하게 됩니다.
***
javaw 파일은 java와 동일하게 설치된 jdk 폴더의 bin 디렉터리 하위에 존재합니다.
때문에 실행 코드에서 javaw 파일에 대한 절대 경로를 주거나 위 이미지와 같이 상대 경로를 통해 실행할 수도 있습니다.
(아래 배치 파일에서 또한 마찬가지로 .bat 파일의 경로를 기준으로 javaw 파일과 jar 파일의 상대 경로를 잡아 동작시킬 수도 있습니다.)
배치 파일 실행 후 cmd 닫는 방법
@echo off
jdk-11.0.8.10\bin\javaw -jar demo.jar
(.bat 파일 예시)
추가로 javaw 명령어를 통해 jar 파일을 실행시키는 동작을 배치 파일(.bat)으로 만들어서 실행시키는 경우도 있는데요.
위와 같은 배치 파일을 실행하게 된다면 대상이 되는 Java 프로그램은 백그라운드에서 정상적으로 동작하겠지만 배치 파일 실행 이후 명령 프롬프트 창이 그대로 계속 열려있기 때문에 직접 닫아줘야 하는 번거로움이 있습니다.
@echo off
start jdk-11.0.8.10\bin\javaw -jar demo.jar /b
(실행 후 명령 프롬프트 창을 닫는 .bat 파일 예시)
이런 경우 다음과 같이 'start' + 실행 명령어 + '/b'를 사용하면 명령 프롬프트 창을 띄우지 않고 해당 명령어를 실행할 수 있습니다.
***
'/b' 옵션은 프로그램을 백그라운드에서 실행하도록 하는 기능이기 때문에 명령 프롬프트 창을 띄우지 않지만, 경우에 따라 jar 파일을 실행시키는 잠깐동안 cmd 창이 열렸다가 닫힐 수 있습니다.
여기까지 윈도우 서버에서 jar 파일을 백그라운드로 실행시키는 방법 및 해당 명령어를 배치 파일로 만들었을 때 배치 파일 실행 후 명령 프롬프트 창을 닫는 방법까지 정리해 보았습니다.
내용 중 잘못된 부분이나 궁금하신 부분은 댓글 남겨주시면 확인하여 답변드리겠습니다. 감사합니다.
'Programming > Java' 카테고리의 다른 글
(java) ZipArchiveOutputStream, ZipArchiveEntry 클래스를 통한 파일 압축 방법 (3) | 2024.11.13 |
---|---|
Java 운영체제(윈도우, 리눅스) 프로세스 상태 확인하는 방법 (0) | 2024.02.11 |
SOLID 객체 지향 프로그래밍의 5가지 원칙 (0) | 2023.08.14 |
java @Builder 기능 더 활용하기(toBuilder, @Singular 등) (0) | 2023.08.05 |
(java) transient volatile 키워드는 무엇인가 (1) | 2023.08.02 |