SW/리눅스

Linux : 백그라운드 실행 방법, 예제, 명령어

얇은생각 2022. 4. 12. 07:30
반응형

일반적으로 터미널에서 명령을 실행할 때 명령이 완료될 때까지 기다려야 다른 명령을 입력할 수 있습니다. 이를 포그라운드 또는 포그라운드 프로세스에서 명령을 실행하는 것이라고 합니다. 프로세스가 포그라운드에서 실행될 때 프로세스가 셸을 차지하고 입력 장치를 사용하여 프로세스와 상호 작용할 수 있습니다.

명령을 완료하는 데 시간이 오래 걸리고 그 사이에 다른 명령을 실행하려면 어떻게 해야 합니까? 여러 가지 선택사항이 있습니다. 가장 명확하고 간단한 옵션은 새 셸 세션을 시작하고 해당 세션에서 명령을 실행하는 것입니다. 다른 옵션은 백그라운드에서 명령을 실행하는 것입니다.

백그라운드 프로세스는 터미널에서 시작하여 백그라운드에서 사용자 개입 없이 실행되는 프로세스/명령입니다.

이 기사에서는 리눅스의 백그라운드 프로세스에 대해 알아보겠습니다. 백그라운드에서 명령을 시작하는 방법과 셸 세션이 닫힌 후에도 프로세스를 계속 실행하는 방법을 보여드리겠습니다.

 

 

Linux : 백그라운드 실행 방법, 예제, 명령어

 

 

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

백그라운드에서 명령을 실행하려면 명령 끝에 앰퍼샌드 기호(&)를 추가합니다.

command &

# [1] 25177

 

 

셸 작업 ID(괄호로 둘러싸인)와 프로세스 ID가 단자에 인쇄됩니다.

여러 프로세스를 동시에 백그라운드에서 실행할 수 있습니다.

백그라운드 프로세스는 명령을 호출한 터미널에 메시지를 계속 기록합니다. stdout 및 stderr 메시지를 표시하지 않으려면 다음 구문을 사용합니다.

command > /dev/null 2>&1 &

 

 

>/dev/dev 2>&1은 stdout을 /dev/dev로, stderr를 stdout으로 리디렉션하는 것을 의미합니다.

작업 유틸리티를 사용하여 현재 셸 세션에서 중지된 모든 작업 및 백그라운드 작업의 상태를 표시합니다.

출력에는 작업 번호, 프로세스 ID, 작업 상태 및 작업을 시작한 명령이 포함됩니다.

jobs -l

# [1]+ 25177 Running                 ping google.com &

 

 

백그라운드 프로세스를 포그라운드로 가져오려면 fg 명령을 사용합니다.

fg

 

 

백그라운드 작업이 여러 개인 경우 다음 명령 뒤에 % 및 작업 ID를 포함하십시오.

fg %1

 

 

백그라운드 프로세스를 종료하려면 kill 명령 다음에 프로세스 ID를 사용합니다.

kill -9 25177

 

 

 

전경 프로세스를 백그라운드로 이동

실행 중인 전경 프로세스를 백그라운드에서 이동하려면 다음을 수행합니다.

Ctrl+Z를 입력하여 프로세스를 중지합니다.

bg를 입력하여 중지된 프로세스를 백그라운드로 이동합니다.

 

 

 

셸이 종료된 후에도 백그라운드 프로세스를 계속 실행

연결이 끊기거나 셸 세션에서 로그아웃하면 백그라운드 프로세스가 종료됩니다. 대화형 셸 세션이 끝난 후에도 프로세스를 계속 실행하는 몇 가지 방법이 있습니다.

한 가지 방법은 다음을 사용하여 셸의 작업 제어에서 작업을 제거하는 것입니다.

disown

 

 

백그라운드 작업이 두 개 이상 있는 경우 다음 명령 뒤에 % 및 작업 ID를 포함하십시오.

disown %1

 

 

jobs -l 명령을 사용하여 활성 작업 테이블에서 작업이 제거되었는지 확인합니다. 의유를 포함하여 실행 중인 모든 프로세스를 나열하려면 ps aux 명령을 사용합니다.

셸 종료 후 프로세스를 계속 실행하는 또 다른 방법은 nohup을 사용하는 것입니다.

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

nohup 명령을 사용하여 백그라운드에서 명령을 실행하려면 다음을 입력합니다.

nohup command &

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

 

 

명령 출력이 nohup.out 파일로 리디렉션됩니다.

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

 

 

 

대안

동시에 여러 대화형 세션을 가질 수 있는 여러 프로그램이 있습니다.

 

 

 

스크린에 표시

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

 

 

 

Tmux

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

 

 

 

백그라운드에서 명령을 실행하려면 명령 끝에 &을 포함합니다.

백그라운드에서 명령을 실행하면 명령이 완료될 때까지 기다리지 않고 다른 명령을 실행할 수 있습니다.

반응형