SW/리눅스

Linux : Nohup 명령어, 예제, 사용 방법

얇은생각 2021. 9. 29. 07:30
반응형

nohup 명령은 인수로 지정된 다른 프로그램을 실행하고 모든 SIGHUP(전화 끊기) 신호를 무시합니다. SHIGHUP은 제어 단자가 닫힐 때 프로세스로 전송되는 신호입니다.

일반적으로 SSH를 통해 프로그램을 실행할 때 연결이 끊기거나 로그아웃하면 세션이 종료되고 터미널에서 실행되는 모든 프로세스가 중지됩니다. 여기서 nohup 명령이 유용합니다. 그러면 모든 끊기 신호가 무시되고 프로세스가 계속 실행됩니다.

 

 

Linux : Nohup 명령어, 예제, 사용 방법

 

 

nohup 명령 사용 방법

nohup 명령의 구문은 다음과 같습니다.

nohup COMMAND [ARGS]

 

 

표준 --help 및 --version을 제외한 다른 옵션은 사용할 수 없습니다.

다음 예를 살펴보겠습니다.

nohup mycommand

# nohup: ignoring input and appending output to 'nohup.out'

 

 

nohup은 포그라운드에서 mycommand 명령을 실행하고 명령 출력을 nohup.out 파일로 리디렉션합니다. 이 파일은 현재 작업 디렉토리에 생성됩니다. 명령을 실행하는 사용자에게 작업 디렉토리에 대한 쓰기 권한이 없으면 사용자의 홈 디렉토리에 파일이 생성됩니다.

터미널을 로그아웃하거나 닫아도 프로세스가 종료되지 않습니다.

 

 

 

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

nohup을 포그라운드에서 사용하면 명령이 완료될 때까지 셸과 상호 작용할 수 없으므로 그다지 유용하지 않습니다.

명령을 백그라운드에서 실행하려면 명령 끝에 & 기호를 추가하십시오.

출력에는 셸 작업 ID(괄호 포함)와 프로세스 ID가 포함됩니다.

nohup mycommand &

# [1] 25177

 

 

작업 ID를 사용하면 fg 명령을 사용하여 명령을 맨 앞으로 가져올 수 있습니다.

어떤 이유로 프로세스를 종료하려면 kill 명령 다음에 프로세스 ID를 사용하십시오.

kill -9 25132

 

 

 

출력을 파일로 리디렉션

기본적으로 nohup은 명령 출력을 nohup.out 파일로 리디렉션합니다. 출력을 다른 파일로 재연결하려면 표준 셸 재연결을 사용하십시오.

예를 들어 표준 출력 및 표준 오류를 my 명령으로 리디렉션할 수 있습니다.다음을 사용할 수 있습니다.

nohup mycommand > mycommand.out 2>&1 &

 

 

표준 출력 및 표준 오류를 다른 파일로 리디렉션하려면 다음과 같이 하십시오.

nohup mycommand > mycommand.out 2> mycommand.err &

 

 

 

대안

터미널을 닫거나 연결을 끊을 때 명령이 종료되지 않도록 하기 위해 사용할 수 있는 몇 가지 대체 프로그램이 있습니다.

 

 

Screen

화면 또는 GNU 화면은 화면 세션을 시작하고 해당 세션 내에서 원하는 수의 창(가상 터미널)을 열 수 있는 터미널 멀티플렉서 프로그램입니다. 연결이 끊어져도 해당 창이 표시되지 않을 때 화면에서 실행 중인 프로세스가 계속 실행됩니다.

 

 

Tmux

Tmux는 GNU 화면의 최신 대안입니다. Tmux를 사용하면 세션을 생성하고 해당 세션 내에서 여러 창을 열 수도 있습니다. Tmux 세션은 지속되므로 터미널을 닫아도 Tmux에서 실행 중인 프로그램이 계속 실행됩니다.

 

 

Disown 

disown은 셸의 작업 제어에서 셸 작업을 제거하는 기본 셸입니다. nohup과 달리 실행 중인 프로세스에 대해서도 disown을 사용할 수 있습니다.

nohup을 사용하면 로그아웃하거나 터미널을 종료할 때 명령이 종료되는 것을 방지할 수 있습니다.

반응형