Kali Linux에서 백그라운드 프로세스의 역할은 정확히 무엇입니까?

Kali Linux에서 백그라운드 프로세스의 역할은 정확히 무엇입니까?

문맥


동일한 주제에 대해 여러 질문을 확인했지만 백그라운드 프로세스가 정확히 무엇인지 설명하면 여전히 혼란스럽습니다. 제가 설명하는 일반적인 대답은 다음과 같습니다.

백그라운드에서 실행되는 프로세스를 통해 동일한 터미널 등과 상호 작용할 수 있습니다.

다음 명령을 실행하여 이를 테스트했습니다.

  • ping google.com -c 100 &
  • 추신: 연산자 없이 동일한 명령을 실행하고 &Ctrl-Z를 사용했지만 수행된 작업은 명령을 일시 중지하는 것뿐이었습니다.

질문


이 명령을 실행하면 출력이 여전히 기본 터미널에 있으므로 명령 실행이 완료되거나 종료될 때까지 다른 명령을 실행할 수 없습니다.

내 질문을 나열하기 전에 내 질문은 명령 출력을 별도의 파일/위치로 리디렉션하는 방법이 아닙니다.. ping google.com -c 100기본 터미널과 계속 상호 작용할 수 있도록 명령 출력을 다른 위치로 리디렉션하는 방법을 이미 알고 있습니다.

내 질문은

  • 가장 간단한 용어로 말하면, 백그라운드 명령이 실제로 수행하는 작업은 무엇입니까?
  • &명령 끝에 a를 추가하는 것은 무엇을 합니까?
  • 이것의 목적은 무엇입니까/백그라운드 명령에서 무엇을 얻을 수 있습니까?
  • 언제 백그라운드에 명령을 넣고 싶나요?

**질문이나 배경에 대해 추가 설명이 필요한 경우 알려주시기 바랍니다.

답변1

대화형 셸의 맥락에서 다음 질문에 답하세요. 쉘 스크립트의 맥락에서 이러한 동작은 약간 다르지만 대체로 유사합니다.

  • 가장 간단한 용어로 말하면, 백그라운드 명령이 실제로 수행하는 작업은 무엇입니까?

백그라운드 명령(또는 기타 프로세스)을 사용하면 셸과 상호 작용(예: 실행)하면서 동시에 실행할 수 있습니다.새로운프로세스).

  • 명령 끝에 &를 추가하는 것은 무엇을 합니까?

구분 기호는 &주어진 명령의 끝을 나타내며 해당 명령에 의해 호출된 프로세스를 실행을 위해 즉시 백그라운드로 이동합니다. 마찬가지로 ;구분 기호는 명령이 종료되고 새 쉘 프롬프트가 제공될 때까지 실행될 해당 명령의 끝을 나타냅니다.

  • 이것의 목적은 무엇입니까/백그라운드 명령에서 무엇을 얻을 수 있습니까?
  • 언제 백그라운드에 명령을 넣고 싶나요?

이것들은 본질적으로 같은 문제입니다. 짧은 대답은 다음과 같습니다. 실행하는 데 오랜 시간이 걸리는 명령을 실행하고 싶지만 실행하는 동안 다른 작업을 계속할 수 있는 경우입니다. 예를 들어, 인위적인 예는 다음과 같습니다.

$ tail -f /path/to/apache-log > ~/webserverlog.txt &
$ curl --silent -o /dev/null https://localhost/path/site/you/are/debugging
$ kill %1

관련 정보