Bash에서 백그라운드 프로세스 실행

MD Aminul Islam 2023년6월20일
  1. Bash에서 &를 사용하여 백그라운드 프로세스 생성
  2. Bash에서 백그라운드 프로세스 종료
  3. Bash에서 disown을 사용하여 현재 작업 실행 유지
  4. 백그라운드 프로세스가 터미널에 메시지를 계속 인쇄하는 것을 방지
  5. nohup을 사용하여 백그라운드에서 명령 실행 유지
  6. Bash에서 실행 중인 포그라운드 프로세스를 백그라운드 프로세스로 변환
Bash에서 백그라운드 프로세스 실행

터미널에서 명령을 실행할 때 명령 실행이 완료될 때까지 기다려야 합니다. 이를 포그라운드 프로세스라고 합니다.

그러나 일부 고급 프로그램은 백그라운드에서 실행해야 합니다. Bash 스크립트에는 백그라운드에서 명령을 실행하는 쉬운 방법이 있습니다.

백그라운드 프로세스의 흥미로운 점은 명령 실행이 끝날 때까지 기다릴 필요가 없다는 것입니다. 다른 명령을 병렬로 실행할 수 있습니다.

그러나 십자 버튼만 클릭하여 백그라운드 프로세스를 종료할 수는 없습니다. 백그라운드 프로세스를 종료하려면 몇 가지 명령을 사용해야 합니다.

이 문서에서는 백그라운드에서 실행되는 명령을 만드는 방법에 대해 설명합니다. 또한 주제를 더 쉽게 만들기 위해 필요한 예와 설명을 사용하여 주제를 논의합니다.

먼저 백그라운드 프로세스를 만드는 방법을 배운 다음 기존 프로세스를 종료하는 방법을 알아봅니다.

Bash에서 &를 사용하여 백그라운드 프로세스 생성

Bash 스크립트에서 백그라운드 프로세스를 만드는 것은 매우 쉽습니다. 명령 끝에 앰퍼샌드 기호 &를 포함하기만 하면 됩니다.

명령을 백그라운드에서 실행하기 위한 일반 구문은 다음과 같습니다.

YOUR COMMAND &

아래 예제는 Bash 스크립트를 백그라운드 프로세스로 실행합니다. 코드는 다음과 같습니다.

./example.sh &

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

[1] 20

여기에서 세 번째 괄호로 둘러싸인 프로세스 번호를 볼 수 있습니다.

프로세스가 작업을 완료한 경우 아래와 같이 알림을 받게 됩니다.

[1]+  Done                    ./example.sh

Bash에서 백그라운드 프로세스 종료

백그라운드 프로세스를 종료하려면 다음 단계만 수행하면 됩니다. 프로세스 ID를 잊은 경우 아래 명령을 사용하여 실행 중인 프로세스를 찾을 수 있습니다.

jobs -l

그러면 실행 중인 프로세스 목록이 출력됩니다.

[1]+ 25177 Running                 ./example.sh &

목록에서 프로세스 ID를 찾고 이를 사용하여 다음 명령을 사용하여 프로세스를 종료할 수 있습니다.

kill %1

프로세스를 종료하는 일반적인 구문은 다음과 같습니다.

kill %ProcessID

Bash에서 disown을 사용하여 현재 작업 실행 유지

터미널이 닫혀 있어도 백그라운드에서 현재 작업을 계속 실행할 수 있습니다. 이를 위해 disown이라는 명령을 사용합니다.

현재 작업을 백그라운드에서 계속 실행하려면 아래 예제 명령을 따를 수 있습니다.

disown -h %3

터미널이 닫혀 있어도 id 3 프로세스를 활성 상태로 유지합니다. 여기서 -h는 프로세스를 활성 상태로 유지하는 옵션입니다.

이 명령의 일반 구문은 다음과 같습니다.

disown -h %ProcessID

백그라운드 프로세스가 터미널에 메시지를 계속 인쇄하는 것을 방지

백그라운드 프로세스가 터미널 창에 메시지를 인쇄하지 못하도록 하려면 다음 구문을 따를 수 있습니다.

Your_Command 2>/dev/null &

이렇게 하면 터미널 창에서 메시지 인쇄가 중지됩니다.

nohup을 사용하여 백그라운드에서 명령 실행 유지

터미널이 닫혀 있어도 백그라운드에서 프로세스를 계속 실행하려면 nohup 명령을 사용해야 합니다. 이 명령은 인수로 지정된 다른 프로그램을 실행하고 모든 SIGHUP 신호를 무시합니다.

터미널을 닫으면 SIGHUP 신호를 보내 제어 터미널에서 실행 중인 모든 프로세스를 닫습니다. 이 명령은 SIGHUP 명령을 무시하므로 nohup 명령으로 실행되는 프로세스는 종료될 때까지 항상 활성 상태입니다.

이 명령에는 &를 포함해야 합니다. 아래 예를 따를 수 있습니다.

nohup ./MyScript.sh &

이 명령은 백그라운드 프로세스를 실행하고 그 출력을 nohup.out 파일에 기록합니다.

Bash에서 실행 중인 포그라운드 프로세스를 백그라운드 프로세스로 변환

포그라운드 프로세스를 백그라운드로 전송하려면 다음 두 단계를 따라야 합니다.

  1. 먼저 Ctrl+Z를 눌러 대상 프로세스를 중지해야 합니다.
  2. bg 명령을 사용하여 중지된 프로세스를 백그라운드로 이동합니다. 아래 구문을 따를 수 있습니다.
bg %ProcessID

이 기사에서 사용된 모든 코드는 Bash로 작성되었습니다. Linux Shell 환경에서만 작동합니다.

MD Aminul Islam avatar MD Aminul Islam avatar

Aminul Is an Expert Technical Writer and Full-Stack Developer. He has hands-on working experience on numerous Developer Platforms and SAAS startups. He is highly skilled in numerous Programming languages and Frameworks. He can write professional technical articles like Reviews, Programming, Documentation, SOP, User manual, Whitepaper, etc.

LinkedIn

관련 문장 - Bash Background