문맥
동일한 주제에 대해 여러 질문을 확인했지만 백그라운드 프로세스가 정확히 무엇인지 설명하면 여전히 혼란스럽습니다. 제가 설명하는 일반적인 대답은 다음과 같습니다.
백그라운드에서 실행되는 프로세스를 통해 동일한 터미널 등과 상호 작용할 수 있습니다.
다음 명령을 실행하여 이를 테스트했습니다.
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