일반적으로 터미널에서 명령을 실행할 때 명령이 완료될 때까지 기다려야 다른 명령을 입력할 수 있습니다. 이를 포그라운드 또는 포그라운드 프로세스에서 명령을 실행하는 것이라고 합니다. 프로세스가 포그라운드에서 실행될 때 프로세스가 셸을 차지하고 입력 장치를 사용하여 프로세스와 상호 작용할 수 있습니다.
명령을 완료하는 데 시간이 오래 걸리고 그 사이에 다른 명령을 실행하려면 어떻게 해야 합니까? 여러 가지 선택사항이 있습니다. 가장 명확하고 간단한 옵션은 새 셸 세션을 시작하고 해당 세션에서 명령을 실행하는 것입니다. 다른 옵션은 백그라운드에서 명령을 실행하는 것입니다.
백그라운드 프로세스는 터미널에서 시작하여 백그라운드에서 사용자 개입 없이 실행되는 프로세스/명령입니다.
이 기사에서는 리눅스의 백그라운드 프로세스에 대해 알아보겠습니다. 백그라운드에서 명령을 시작하는 방법과 셸 세션이 닫힌 후에도 프로세스를 계속 실행하는 방법을 보여드리겠습니다.
백그라운드에서 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에서 실행되는 프로그램이 계속 실행됩니다.
백그라운드에서 명령을 실행하려면 명령 끝에 &을 포함합니다.
백그라운드에서 명령을 실행하면 명령이 완료될 때까지 기다리지 않고 다른 명령을 실행할 수 있습니다.
'SW > 리눅스' 카테고리의 다른 글
Linux : Stat 명령어, 사용 방법, 예제 (0) | 2022.04.14 |
---|---|
Linux : Ubuntu 18.04 : Python 3.8 설치 방법, 예제, 명령어 (0) | 2022.04.13 |
Linux : Apache 시작, 중지, 재시작 방법, 예제, 명령어 (0) | 2022.04.11 |
Linux : CentOS 8 : Let's Encrypt 로 아파치 보호 방법, 예제, 명령어 (0) | 2022.04.10 |
Linux : CentOS 8 : Jenkins 설치 방법, 예제, 명령어 (0) | 2022.04.09 |