Spring Framework/SpringBoot

[SpringBoot] *.jar 백그라운드 실행하기 - $ nohup 명령어 &

Razelo 2022. 1. 25. 18:08

springboot로 프로젝트를 진행하는 와중에 운영 서버에서 .jar 을 실행시켜놓으려고 하는데 

백그라운드 실행을 시키기 위해서는 nohup 커맨드를 입력해야 한다. 

 

평소에 실행시킬 때는 

java -jar blabla-0.0.1-SNAPSHOT.jar 와 같이 실행했겠지만 

 

백그라운드에서 실행시키기 위해서는 아래와 같이 명령어를 치면 된다. & 이 백그라운드라는 의미이다. 

nohup java -jar blabla-0.0.1-SNAPSHOT.jar &

 

즉 이 명령어를 치면 터미널 세션이 끊어져도 계속 실행된다. 

이 명령어를 치면 nohup.out 파일이 생기는데 이 파일에 해당 jar파일의 출력들이 저장된다고 보면 된다. 

 

실제로 위의 명령어들을 실행한 뒤에 ps -al을 실행해보면 아래와 같이 잘 실행하고 있는 중임을 알 수 있다. 

나중에 이 프로세스를 죽이고 싶다면 pid 를 확인한 뒤에 그냥 kill 시켜주면 된다. 

kill -9 294094 

사진 대로라면 위의 명령어를 치면 된다. 

(그런데 갑자기 궁금점이 도지는데 PPID 값을 줘서 parent를 죽이면 어떻게 되려나? 터미널 창이 닫히려나? 운영서버라서 무서워서 테스트해보지 않았다. 나중에 시간될때 내 서버에서 실험해봐야겠다. )

 

ps -al 해도 안뜰 경우가 있다. 이런 경우에는

ps -ef | grep java 를 하면 뜰 것이다.

 

2022-07-01 

(ps -ef | grep java 를 해석하자면 참고로 막대기는 vertical bar 라고 부른다. bar 왼쪽의 출력을 input으로 먹는다. 냠냠 먹은 string들 중에서 이제 grep 을 한다. 영어뜻 그대로다. 뭔가를 잡는다. 낚아챈다. 뭘 낚아챌까? grep 에 인자로 주어진 java 를 낚아챌거다. java 관련 string 이 있는건 모두 잡아올거다. 그래서 그 결과를 출력할거다. 시스템 프로그래밍을 배우면 이거와 비슷한 내용들이 많이 있는데 무심코 쓰는 명령어들도 내부 동작이 꽤 있고 복잡하다는게 좀 신기하다. 역시 리눅스 근본)

 

반응형