본문 바로가기

DKE/리눅스 프로그래밍

[리눅스] foreground와 backgroud / 2022.12.03

리눅스/유닉스 시스템은 한 번에 여러 작업을 동시헤 할 수 있는 다중작업 시스템이다.

1. foreground

사용자가 한 명령어를 실행시키고 그 명령의 실행이 종료되어 결과가 출력될 때까지 다른 명령어를 실행하지 않고 기다리는 경우를 foreground로 수행한다고 한다. 

 

1-1) sleep 명령어를 foreground로 수행하기

sleep 명령어는 지정된 시간만큼 실행을 중지한다.

 

2. background

foreground와는 반대로 background는 사용자가 하나의 명령어를 실행시킨 후에 그 실행이 끝날 때까지 기다리지 않고, 다른 명령어를 실행시켜 결과적으로 시스템 내에 여러개의 작업이 동시에 실행되도록하는 경우를 말한다.

background에서 실행하는 것은 시간이 오래 걸리는 긴 작업일 때 유용하다. 

$ 명령어 & // 명령어 끝에 &를 붙여서 해당 명령어를 background로 실행시킬 수 있다.

 

2-1) sleep 명령어를 background로 수행하기

sleep 명령어를 background로 수행하면 다음 명령어를 실행시킬 수 있다.

* 현재 진행되고 있는 작업들을 jobs 명령어를 사용하면 볼 수 있다.

 

이때 [1]은 작업 번호이고 26650은 프로세스 ID를 나타낸다.

 

2-2) foreground로 수행 중에 background로 전환 (ctrl ^ z 및 bg 명령어 사용)

sleep 명령어를 foreground로 수행 -> ctrl^z 로 중단 -> bg %작업번호 사용하여 bg로 실행 

 

2-3) background로 수행 중에 foreground로 전환 (fg 명령어 사용)