작업의 백그라운드 프로세스와 포그라운드 프로세스란 무엇입니까?

작업의 백그라운드 프로세스와 포그라운드 프로세스란 무엇입니까?

저는 Redhat Linux 7을 배우고 있으며 주제는 Linux 프로세스 모니터링 및 관리이며 Processess 및 해당 명령에 대해 알고 있습니다. 그러나 나는 "제어 작업"과 백그라운드에서 작업 실행, 실제 배경 및 포그라운드 프로세스를 이해하지 못합니다. 이 용어를 우리에게 설명해 주실 수 있나요?

답변1

대화형 셸에서 실행되는 대부분의 명령은 다음에서 실행됩니다.전망. 이는 기본적으로 다른 작업을 수행하기 전에 실행 중인 명령(또는 프로세스)이 중지될 때까지 기다려야 함을 의미합니다. 길거나 복잡한 프로그램이나 스크립트의 경우 다른 접근 방식은 다음을 사용하는 것입니다.배경. 이는 긴 프로그램이 실행되는 동안 작업을 계속할 수 있음을 의미합니다.

&명령 끝에 있는 앰퍼샌드가 이를 수행합니다. Ctrl-Z를 사용하여 전경 명령을 일시 중지하고 해당 명령과 함께 배경에 넣을 수도 있습니다 bg. 그런 다음 이러한 백그라운드 작업( jobs명령)을 관리하고 종료하는 등의 작업을 수행할 수 있습니다.

백그라운드 명령은 다음과 같습니다.아니요tty에서 분리됨: 어떤 경우에는 백그라운드 명령이 사용자 입력을 기다릴 수 있습니다( fg작업을 다시 포그라운드로 가져오는 명령 참조). 터미널 세션을 종료하는 경우(터미널 닫기, 로그아웃, 시스템 종료 등) 백그라운드 작업도 종료될 수 있습니다( nohup자세한 내용은 참고자료 참조).

답변2

간단히 말해서,

시작하는 모든 프로세스는 포그라운드에서 실행됩니다. 키보드에서 입력을 받아 화면에 출력을 보냅니다.

$ls ch*.doc

현재 디렉터리의 모든 파일을 나열합니다.

키보드에 연결되지 않고 백그라운드 프로세스가 실행됩니다. 백그라운드 프로세스에 키보드 입력이 필요한 경우 대기합니다. 백그라운드에서 프로세스를 실행하면 다른 명령을 실행할 수 있다는 장점이 있습니다. 다른 명령을 시작하기 전에 프로세스가 완료될 때까지 기다릴 필요가 없습니다.

백그라운드 프로세스를 시작하는 가장 쉬운 방법은 명령 끝에 앰퍼샌드(&)를 추가하는 것입니다.

$ls ch*.doc &

다음은 도움이 될 수 있는 몇 가지 링크입니다.

https://stackoverflow.com/questions/8938058/Background-process-vs-foreground-process

http://linux.about.com/cs/linux101/a/multitasking.htm

https://stackoverflow.com/questions/6573249/difference-Between-foreground-job-and-Background-job

답변3

&마지막에 추가하여 Windows 또는 Mac에서 최소화된 애플리케이션을 실행하는 것처럼 백그라운드에서 프로그램을 실행하세요. 해당 fg명령을 사용하는 것은 데스크탑으로 다시 복원하는 것과 같습니다.

ctrl+z반대로, 프로그램이 실행되는 동안 누르면 실행이 일시 중지됩니다. 즉, 수행 중인 작업 완료를 중지하고 백그라운드로 보냅니다.

또한 이러한 프로그램은 현재 세션과 연결되어 있으므로 터미널을 종료하면 백그라운드에서 실행 중이거나 일시 중지된 모든 프로그램도 종료됩니다.

관련 정보