백그라운드 Linux로 프로세스 보내기

Send Process Background Linux



그래픽 데스크탑 환경에서 작업할 때 백그라운드 프로세스에 대해 거의 걱정하지 않습니다. 포그라운드에서 실행 중인 프로세스가 있는 경우 다른 터미널 창을 빠르게 생성하고 작업을 계속할 수 있습니다.

그러나 SSH와 같은 원시 터미널 셸에 있는 경우, 특히 장기 실행 작업에서 완료될 때까지 셸을 점유하고 차단하는 프로세스에 대해 종종 걱정하게 될 것입니다. 이것이 배경 및 전경 프로세스의 개념이 작동하는 곳입니다.







이 튜토리얼에서는 Linux에서 생성 및 관리를 포함하여 백그라운드 및 포그라운드 프로세스가 무엇인지 설명합니다.



프로세스란 무엇입니까?

기본 수준에서 시작하겠습니다. 프로세스란 무엇입니까?



Linux에서 프로세스는 프로그램의 인스턴스입니다. 일반적으로 이것은 쉘의 모든 명령이나 실행 파일이 프로세스임을 의미합니다.





주로 두 가지 유형의 프로세스가 있습니다.

  • 포그라운드 프로세스
  • 백그라운드 프로세스

포그라운드 프로세스는 주로 우리가 시작하고 상호 작용하는 일반적인 애플리케이션입니다. 예는 Gnome의 노틸러스 파일 관리자입니다. 대부분의 경우 쉘이나 데스크탑 환경에서 포그라운드 프로세스를 시작할 수 있습니다.



반면에 백그라운드 프로세스는 백그라운드에서 실행되며 사용자의 입력이나 상호 작용이 필요하지 않습니다. 일반적인 Linux 데몬이 그 예입니다.

백그라운드에서 프로세스를 실행하는 방법

실행 중에 쉘 세션을 점유하고 종료될 때까지 명령 실행을 방해하는 프로세스가 있다고 가정합니다.

예를 들어 셸에서 Firefox 브라우저를 실행하면 프로세스가 종료될 때까지 세션을 차지합니다.

$파이어폭스


보시다시피 Firefox가 실행 중인 동안에는 쉘 프롬프트를 사용할 수 없으며 더 이상 명령을 실행할 수 없습니다.

이를 해결하기 위해 두 가지 방법으로 수행할 수 있습니다.

1: 앰퍼샌드(&) 사용

첫 번째 방법은 앰퍼샌드 및 기호를 사용하는 것입니다. 이것은 쉘이 백그라운드에서 앰퍼샌드 앞에 오는 모든 명령을 실행하도록 지시합니다.

예:

파이어폭스&

이러한 시나리오에서 프로세스는 백그라운드에서 실행되고 새로운 쉘 프롬프트로 생성되어 명령을 계속 실행할 수 있습니다.

또한 두 개의 숫자 식별자를 제공합니다. 대괄호로 묶인 첫 번째 것은 작업 ID이고 다음은 프로세스 ID입니다.

2: CTRL + Z, bg 명령 사용.

프로세스를 백그라운드에 배치하는 데 사용할 수 있는 다음 방법은 단축키 CTRL + Z를 사용하는 것입니다. 이렇게 하면 프로세스가 셸을 차단하지 못하게 됩니다. 그런 다음 bg 명령을 사용하여 백그라운드로 푸시할 수 있습니다.

예를 들어 다음과 같이 Firefox를 시작하여 시작합니다.

$파이어폭스

프로세스가 실행되는 동안 CTRL + Z를 누릅니다. 그러면 셸 프롬프트가 반환됩니다. 마지막으로 bg 명령을 입력하여 프로세스를 백그라운드로 푸시합니다.

백그라운드 프로세스를 표시하는 방법

백그라운드에서 프로세스를 보고 관리하려면 셸에서 jobs 명령을 사용합니다. 그러면 현재 터미널 세션의 백그라운드 작업이 표시됩니다.

예를 들어:

$직업

백그라운드 작업의 출력 예:

백그라운드에서 실행 중인 프로세스를 포그라운드로 가져오려면 fg 명령 다음에 작업 ID를 사용하십시오.

예를 들어, firefox 작업을 포그라운드로 가져오려면 다음 명령을 사용합니다.

$fg %1

배경을 다시 넣으려면 CTRL + Z를 누른 다음 bg 명령을 누르십시오.

쉘이 죽은 후 프로세스를 지속시키는 방법

백그라운드에서 프로세스를 실행 중이고 셸 세션이 종료되면 이와 관련된 모든 프로세스가 종료되며, 이는 특히 SSH 세션인 경우 문제가 될 수 있습니다.

그러나 tmux나 screen과 같은 터미널 멀티플렉서를 사용하는 경우에는 세션을 다시 연결하기만 하면 되므로 크게 문제가 되지 않습니다.

그러나 멀티플렉서 없이 쉘 세션을 실행하는 경우 nohup 명령을 사용할 수 있습니다.

nohup 명령은 중단에 영향을 받지 않으며 프로세스에 전송된 SIGHUP 신호를 무시할 수 있습니다.

따라서 nohup으로 명령을 실행하면 쉘 세션이 실수로 종료되더라도 계속 실행됩니다.

예를 들어, nohup으로 Firefox를 실행하려면 다음 명령을 사용하십시오.

노헿파이어폭스&

이것은 쉘 종료를 지속할 때 백그라운드에서 프로세스를 실행합니다.

새 터미널 세션을 실행하고 백그라운드 작업을 볼 수 있습니다. 백그라운드에서 여전히 실행 중인 프로세스를 볼 수 있습니다.

결론

이 튜토리얼에서는 Linux에서 프로세스를 실행하고 백그라운드로 보내는 다양한 방법에 대해 논의했습니다. 또한 백그라운드 프로세스를 백그라운드로 가져오고 셸 종료 시 중단을 지속하는 방법도 다루었습니다.