nohup 명령은 인수로 지정된 다른 프로그램을 실행하고 모든 SIGHUP(전화 끊기) 신호를 무시합니다. SHIGHUP은 제어 단자가 닫힐 때 프로세스로 전송되는 신호입니다.
일반적으로 SSH를 통해 프로그램을 실행할 때 연결이 끊기거나 로그아웃하면 세션이 종료되고 터미널에서 실행되는 모든 프로세스가 중지됩니다. 여기서 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을 사용하면 로그아웃하거나 터미널을 종료할 때 명령이 종료되는 것을 방지할 수 있습니다.
'SW > 리눅스' 카테고리의 다른 글
Ubuntu 18.04 : Chromium Web Browser 설치 방법, 예제, 명령어 (0) | 2021.10.01 |
---|---|
Linux : Vim / Vi 편집기로 파일 저장, 종료 방법, 예제, 명령어 (0) | 2021.09.30 |
CentOS 7 : MySQL Master-Slave Replication 구성 방법, 예제, 명령어 (0) | 2021.09.28 |
Linux : Type 명령어, 사용 방법, 예제 (0) | 2021.09.27 |
Ubuntu 18.04 : GCC Compiler 설치 방법, 예제, 명령어 (0) | 2021.09.26 |