CS 지식/리눅스

포그라운드와 백그라운드란 ?

쑨토리 2023. 8. 18. 18:02

 

 

포그라운드(Foreground)와 백그라운드(Background)는 컴퓨터 프로세스의 실행 및 관리 상태를 나타내는 용어입니다.


1. 포그라운드 (Foreground)


포그라운드에서 실행되는 프로세스는 사용자와 상호 작용하는 프로세스입니다. 이 프로세스는 화면에 출력되며, 사용자의 입력을 받아들이고 사용자와의 상호 작용을 통해 작업을 수행합니다. 대부분의 인터랙티브한 프로그램들은 포그라운드에서 실행되며, 사용자와의 커뮤니케이션을 위해 화면에 결과를 표시하거나 입력을 받아들입니다. 쉘(Shell)에서 해당 프로세스를 수행할 동안 다른 동작은 할 수 없는 상태이며, 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 방식입니다.

예를 들어, 터미널에서 명령어를 입력하고 실행되는 명령은 포그라운드에서 실행됩니다. 해당 명령이 실행 중인 동안 터미널은 그 명령의 출력을 보여주고, 사용자가 추가 입력을 할 수 있게 합니다.

 

* 포그라운드 명령을 했는데, 무한루프가 걸리거나 오래걸릴 때 강제 종료하는 방법은 

CTRL + c 를 눌러서 프로세스 작업을 취소(종료)할 수 있습니다.  



2. 백그라운드 (Background)


백그라운드에서 실행되는 프로세스는 사용자와의 직접적인 상호 작용 없이 실행되는 프로세스입니다. 이러한 프로세스는 주로 긴 작업을 수행하거나 백엔드에서 실행되는 서비스 형태의 프로그램에 사용됩니다. 백그라운드에서 실행되는 프로세스는 포그라운드와 달리 화면에 출력되지 않으며, 사용자 입력을 기다리지 않고 동작합니다. 하나의 쉘(터미널)에서 여러 개의 프로세스를 동시에 실행할 수 있는 방식이라 한 동작을 수행하는 동안에도 동시에 여러 다른 동작을 할 수 있습니다. 

예를 들어, 큰 파일의 복사 작업이나 데이터베이스 서버와 같은 백그라운드에서 실행되는 프로세스는 사용자의 입력을 기다리지 않고 자동으로 작업을 수행합니다.

포그라운드와 백그라운드의 중요한 차이점은 사용자와의 상호 작용 여부입니다. 포그라운드에서 실행되는 프로세스는 사용자와 직접적으로 연결되어 작업을 수행하며, 백그라운드에서 실행되는 프로세스는 사용자와의 직접적인 상호 작용 없이 백그라운드에서 동작합니다.

 

* #  jobs  라는 명령어를 통해 현재 백그라운드로 실행되고 있는 명령어들을 확인할 수 있습니다. 

 


예시

 

 

# find / -name '*.py' > list.txt 라고 포그라운드 명령을 했을때, .py로 끝나는 파일들을 찾느랴고 많은 시간이 걸려 다른 작업을 못하게 될 것입니다.

그래서 이때  # find / -name '*.py' > list.txt & 라는 백그라운드 명령을 하게되면, 다른 명령을 수행하면서 결과를 기다릴 수 있게 됩니다.