⚙️OS/Linux

[Linux] Cent OS 7에서 jar파일 백그라운드 실행시키기

뉴발자 2024. 1. 31.
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

그림 1. Linux

 

 

USB 마운트 하기

https://tlseoqja.tistory.com/70

 

 

USB 파일 복사하기

먼저 USB의 파일을 복사할 폴더를 생성해준다.

 

필자는 usr폴더에 server 폴더를 새로 생성했다.

 

다음의 명령어로 jar파일과 config 파일을 복사해준다.

> cd /usr/server
> cp /tmp/usb/test.jar /usr/server/test.jar
> cp /tmp/usb/config.properties /usr/server/config.properties

 

cp 명령어에 첫 번째로 들어가는 이름은 복사할 경로의 파일명이고, 두 번째로 들어가는 이름은 복사될 파일명이다.

 

만약 두 번째 파일명에 폴더 경로를 입력하지 않고 파일명만 입력한다면 현재 경로에 파일이 복사된다.

그림 2. USB 파일 복사

 

파일을 복사했으니 USB는 언마운트해준다.

> umount /tmp/usb
728x90

 

 

jar 파일 실행하기

jar 파일이 정상적으로 실행되는지 확인하기위해 다음의 명령어를 입력해준다.

> java -jar /usr/server/test.jar

 

만약 실행이 안된다면 네트워크 설정이 안되어있을 수 있으니 아래의 사이트를 참고해서 네트워크 설정을 해주면 된다.

https://lifegoesonme.tistory.com/416

 

[리눅스] yum 명령어 안될 때 "could not retrieve mirrorlist"

테스트 환경에서 yum이 실행되지 않았던 부분에 대해서 간단하게 설명드리려 합니다. yum command error 1. 에러 확인 # 외부로 ping도 잘 나가는 상황 [root@localhost ~]# ping 8.8.8.8 PING 8.8.8.8 (8.8.8.8) 56(84) byte

lifegoesonme.tistory.com

 

다음과 같이 jar 파일이 정상적으로 실행되는 것을 확인할 수 있다.

그림 3. jar 파일 실행

 

 

통신 테스트

Postman을 사용해서 서버로 API 테스트를 진행했다.

 

하지만 응답은 돌아오지 않았고 시간 초과로 연결이 끊겼다.

그림 4. Postman을 사용한 API 테스트 후 결과

 

프롬프트 창을 열어 해당 IP로 ping이 가는지 확인했고 ping은 정상적으로 수신됐다.

 

하지만 telnet으로 해당 PORT로 접속했을 때는 연결되지 않았다.

그림 5. 프롬프트를 통한 서버 telnet 접속

 

방화벽 해제하기

어느 OS에서든 기본적으로 외부 접속을 막기위해 방화벽 시스템이 실행된다.

 

linux 역시 firewall이라는 방화벽이 기본적으로 동작되고 있다.

 

방화벽 사용으로 인해 외부에서 접속할 수 없는 현상이 발생하게 됐고 방화벽을 해제하는 방법을 알아보려 한다.

 

방화벽 서비스 해제

다음의 명령어를 통해 등록된 서비스를 확인할 수 있다.

> systemctl -t service list-unit-files

 

등록된 서비스 목록을 보면 firewalld 라는 방화벽 서비스가 enabled 되어있는 것을 볼 수 있다.

그림 6. linux에 등록된 서비스 목록 확인

 

방화벽 서비스를 종료하는 명령어는 다음과 같다.

> systemctl stop firewalld

 

이렇게 하면 방화벽 서비스는 종료되지만 enabled로 설정되어있는 경우, 시스템 재부팅 시 서비스가 재시작하게 된다.

 

시스템 재부팅 시 방화벽 서비스를 실행하지 않으려면 다음의 명령어를 입력한다.

> systemctl disable firewalld

 

명령어 실행 후 다시 서비스 목록을 보면 disabled로 설정되어있는 것을 확인할 수 있다.

그림 7. 시스템 재실행 시 방화벽 해제

 

다시 java 서버를 실행시켜준 후 Postman으로 테스트를 진행해본다.

그림 8. 방화벽 해제 후 API 테스트

 

 

Java 서버를 백그라운드로 실행하기

Cent OS 7의 경우 하나의 터미널로 화면이 구성되어있다.

 

일반적인 java 명령어로 서버를 띄우게되면 서버를 끄지 않는 이상 다른 작업을 할 수 없게 된다.

 

따라서 다음 명령어를 실행해서 jar 파일을 백그라운드로 실행시켜주면 된다.

> nohup java -jar /usr/server/test.jar &

 

하지만 jdk를 USB로 설치한 경우 다음과 같은 에러가 발생하게 된다.

nohup: failed to run command ‘java’: No such file or directory

 

java라는 커맨드를 찾지못해서 발생하는 에러이므로 다음과 같이 java 경로를 적어주면 해결된다.

> nohup /usr/lib/jdk-17.0.10/bin/java -jar /usr/server/test.jar &

 

백그라운드 실행 후 다음 명령어를 입력해서 프로세스를 확인할 수 있다.

> ps -ef | grep '프로세스명'

 

lsof 라이브러리가 설치되어있다면 아래 명령어로도 확인이 가능하다.

> lsof -i :서버포트

 

그림 9. Java 서버 프로세스 등록 확인

 

프로세스의 종료를 원하면 해당 프로세스의 pid로 종료할 수 있다.

 

ps 명령어를 사용했을 때, 계정 다음에 나오는 숫자가 pid이다.

> kill -9 (pid)

 

 

 

 

 

 

 

 

 

 

728x90

댓글