본문 바로가기

Server/linux공통

백그라운드(Background) 작업과 포어그라운드(Foreground) 작업 fg bg jobs

백그라운드(Background) 작업과 포어그라운드(Foreground) 작업

리눅스는 멀티태스킹 시스템이므로 명령 실행을 간단히 포어그라운드(Foreground)에서 할 수 있으며,

명령행 뒤에 & 기호를 넣어 백그라운드(Background) 방식으로 명령을 실행할 수 있습니다. 우리가 프롬포트에서 명령을 입력하면

그 명령이 실행되는 상태는 포어그라운드로 실행되는 것입니다. 그 명령 뒤에 백그라운드 실행을 의미하는 기호 앰퍼센드 & 을 붙이면

작업 번호와 PID를 디스플레이 하고 바로 프롬프트가 떨어지며, 명령은 백그라운드에서 실행됩니다.

 

 

포어그라운드에서 작업 실행이 장시간 소요되어 다른 작업을 할 수 없는 경우 장시간 소요되는 작업을 백그라운드로 돌리게 되면

포어그라운드에서는 다른 작업들을 할 수 있는 이점이 있습니다. 

예) FTP사이틍에서 자료를 전송이 완료될때까지 포어그라운드 상태에서 어느 작업도 수행할 수 없는 단점이 있습니다. 

이 경우 FTP를 백그라운드로 실행해 놓으면 포어그라운드에서 다른 명령행을 입력받을 수 있는 상태가 되기 때문에 다른 작업을 수행할 수 있게 됩니다. 그런데 백그라운드로 작업이 실행될 때 그 작업이 샐행되고 있는지 할 수 없습니다. 백그라운드에서 작업이 실행되고있는지 확인하기 위해 서는  jobs 명령을 사용합니다.

 

 

jobs 명령이 주어졌을때 나오는 작업목록에서 +는 현재 작업이 실행중 - 는 실행될 작업을 의미합니다.

 

백그라운드를 포어그라운드로 변경하는 명령어는 fg와 bg명령입니다. 

fg : 백그라운드->포어그라운드

bg: 포어그라운드->백그라운드

 

사용법 :

fg %작업번호, bg %작업번호

 

현재 포어그라운드에서 실행중인 작업을 바로 백그라운드로 전환할 수 없는데 이럴 때에는 작업을 일시 중단시키는

인터럽션명령(Ctrl + Z) 키를 사용 중단 시킨뒤 bg명령으로 다시 백그라운드에서 실행 시킬 수 있습니다.

 

백그라운드에서 실행중인 작업이 완료되거나 실행중인 작업을 종료시에는 Ctrl + C 키 명령으로 작업을 끝낼 수 없습니다.

포어그라운드 상태는 가능하지만 백그라운드에서는 이 명령이 적용되지 않으므로 kill 명령을 사용하여야 합니다.

jobs 으로 작업번호 파악뒤 kill %작업번호 명령으로 종료합니다. 또는 pidof 명령으로 pid파악 후 kill -9 pid번호 로 종료합니다.

(축약으로는 kill -9 'pidof mc'  프로세스명 mc를 종료)