OS/Linux

Linux > 프로세스를 백그라운드로 실행

Krevis 2025. 3. 6. 07:16

여기서는 SSH 터미널을 사용해 Executable jar를 실행하는 것을 설명한다

 

단순 자바 프로세스 실행

java -jar application.jar

 

해당 터미널에 표준 출력/에러가 출력됨

Foreground에서 실행되므로 다른 작업 불가

Ctrl + c를 눌러 프로세스를 중단할 수 있다

터미널 세션이 끊기면(터미널 종료도 동일) 프로세스 중단됨

 

Background로 프로세스 실행

java -jar application.jar &

[1] 3443849

 

명령어 실행 직후 PID를 출력함

해당 터미널에 표준 출력/에러가 출력됨

백그라운드에서 실행되므로 다른 작업 가능

터미널 세션이 끊기면(터미널 종료도 동일) 프로세스 중단됨

 

터미널 세션이 끊겨도 프로세스 실행

nohup java -jar application.jar &

 

명령어 실행 직후 PID를 출력함

현재 디렉터리의 nohup.out 파일에 표준 출력/에러가 저장된다

백그라운드에서 실행되므로 다른 작업 가능

터미널 세션이 끊겨도 프로세스 실행됨

nohup

No hang up

서버와의 연결 세션이 끊어져도 해당 작업을 계속 수행하게 한다

서버와 연결된 터미널에서 세션 로그아웃이 발생할 때, 리눅스는 해당 터미널에서 실행된 프로세스에 대해 HUP signal을 전달해 종료시킨다

nohup은 이 신호를 무시한다

실행 로그는 현재 디렉터리의 nohup.out 파일에 저장된다

 

표준 출력/에러 버리기

nohup java -jar application.jar 1> /dev/null 2>&1 &

 

1>

표준 출력(stdout)을 Redirection하는 연산자

그냥 >만 써도 똑같이 동작

 

/dev/null

출력을 버릴 때 사용하는 디바이스 파일

 

1> /dev/null

표준 출력을 버린다

 

2>

표준 에러(stderr)을 리디렉션하는 연산자

 

2>&1

표준 에러를 표준 출력으로 리디렉션

2번 파일 디스크립터를 1번으로 돌리기

 

&

명령을 백그라운드에서 실행

 

참고: https://codingdog.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%EB%AA%85%EB%A0%B9%EC%96%B4-devnull-21-%EC%9D%98-%EC%9D%98%EB%AF%B8%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B4%85%EC%8B%9C%EB%8B%A4