- 리눅스의 프로세스는 실행 방식을 기준으로 두 종류로 나뉩니다. 각각 'foreground' 프로세스와 'background'프로세스로 지칭하는데, 사용자와의 상호작용에 있어 차이점을 보입니다.
- 아주 간단히 설명하자면 쉘을 점유하냐, 하지 않느냐로 프로세스의 실행방식이 나뉩니다.
- 영어에서 fore-라는 접두사는 앞, 미래라는 의미를 가지고 있기에 foreground process는 터미널 또는 콘솔로 진행상황or결과가 출력되며 사용자와 실시간으로 상호작용하는 프로세스를 의미합니다. (터미널이나 콘솔은 간단히 모니터로 생각하면 됩니다). 기본적으로 프로세스는 foreground 방식으로 실행됩니다.
- 이와 반대로 background process는 터미널 또는 콘솔로 진행상황or결과가 출력되지 않고 뒷단에서 실행되는 프로세스로, 명령어를 통해 실행하고 나면 따로 조작하지 않는 이상 사용자와 직접적으로 상호작용하지 않습니다.
- 아래에서 자세히 살펴보겠습니다.
Foreground process
- 사용자가 프로세스를 직접 제어하며, 해당 프로세스가 종료되지 않은 상태에서는 쉘에 다른 명령어를 입력할 수 없습니다. 즉, foreground 프로세스가 실행되는 동안 사용자는 다른 작업을 수행할 수 없게 됩니다.
- 예를들어, 'vim'명령어로 텍스트 에디터를 실행하면 사용자는 에디터와 직접 상호작용하게 되며, 에디터를 종료하기 전까지 다른 명령어를 입력할 수 없습니다.
- 기본적으로 모든 명령어는 foreground 방식으로 실행됩니다.
Background process
- background 프로세스가 실행되는 동안에도, 사용자는 쉘에서 다른 명령어를 입력하거나 다른 작업을 수행할 수 있습니다.
- 명령어 끝에 '&' 기호를 추가하여 명령어를 백그라운드에서 실행시킬 수 있습니다.
- 예를 들어, 큰 파일을 다운로드하는 작업이 오랜 시간이 걸릴 것으로 예상되는 경우 이 작업을 백그라운드에서 실행하여 사용자는 쉘에서 다른 작업을 계속 수행할 수 있습니다.
- 위 캡쳐에서 '[1] 326'은 각각 작업번호와 PID를 의미합니다. 각 background 프로세스를 구분하기 위해 커널은 Job number라고 불리는 작업번호를 background 프로세스에 할당합니다.
foreground ↔ background 전환 응용
- 'CTRL+Z' : 현재 실행중인 foreground 프로세스를 일시 중단시키고 백그라운드로 보냅니다.
- bg %작업번호 : CTRL+Z 입력으로 일시중단된 프로세스를 백그라운드에서 계속 실행시킵니다.
- fg %작업번호 : 백그라운드에서 실행 중인 프로세스를 foreground 프로세스로 전환합니다.
- jobs : 실행 중이거나 중단된 background 프로세스의 전체목록을 표시합니다. 작업번호와 상태를 확인할 수 있습니다.
'Linux' 카테고리의 다른 글
[Linux] Windows <-> Linux 복붙 PuTTY 명령어 (0) | 2024.05.17 |
---|---|
[Linux] 쉘 스크립트 - #! (0) | 2023.08.22 |
[Linux] LVM(Logical Volume Management)란? (0) | 2023.08.21 |
[Linux] 지정한 시간에 원하는 명령을 실행 - at 명령어 (0) | 2023.08.13 |
[Linux] Shell 변수 참조 - $ (0) | 2023.08.08 |