DEVOPS/LINUX

[Linux] 리눅스 쉘 전면처리/후면처리

연듀 2021. 9. 11. 17:08

 

전면 처리(foreground processing)


명령어를 입력하면 명령어가 전면에서 실행되며 명령어 실행이 끝날 때까지 쉘이 기다려 준다.
표준입력이 가능하다.

 

 


후면 처리(background processing)

 

명령어들을 후면에서 처리하고 전면에서는 다른 작업을 할 수 있으며 동시에 여러 작업을 수행할 수 있다.

 $ 명령어 &

 

 

 

 

실행 중일 때 

 

 

background에서 작업 실행하기

 

$ (sleep 50; echo done1) &

 

=> 세미콜론은 연속해서 실행하라는 뜻이다.

괄호는 두개 이상의 명령어를 연결하고 전체를 백그라운드에서 돌리기 위함이다.

 

50초동안 sleep하라. 

50초가 지나고 sleep이 실행이 된 후에 done1을 출력하라.

 

백그라운드가 돌아가고 바로 프롬프트가 뜬다. 

 


 $ (sleep 50; echo done2) &

 

그리고 이번엔 50초동안 sleep하고 done2를 출력하라. 

 

여기서 [1], [2]는 백그라운드 프로세스를 돌릴때마다 부여되는 job 번호를 의미한다.

2542, 2544는 프로세스 번호를 의미한다.

 

 


$ jobs
[1]- Running ( sleep 50; echo done1 ) &
[2]+ Running ( sleep 50; echo done2 ) &

 

 

=> jobs 명령어는 현재 돌아가고 있는 백그라운드 프로세스 리스트를 모두 출력해준다.

백그라운드 프로세스는 스택처럼 쌓이는데, +는 스택의 가장 위에 있다는 뜻이고 -는 그다음 밑에 있다는 뜻이다.

 

 

 

 

background의 작업을 forground로 돌리기

 

 $ fg %작업번호
$ fg %1
( sleep 50; echo done1 )

 

fg 엔터를 하면 스택에 제일 위에 있는 것이 foreground로 들어온다.

fg %작업번호를 하면 background에서 실행되고 있는 작업번호에 해당되는 작업을 foreground로 돌릴 수 있다. 

 

 

후면처리는 표준 입력이 안된다. 하지만 표준 출력은 된다.

출력은 되도록이면 파일로 하는것이 좋다.

 

 

 

 

 

forground의 작업을 background로 돌리기

 

어떤 프로세스를 forground로 돌리다가 새로운 명령을 넣기 위해서 background로 돌리고 싶으면 

명령어를 중단하면 된다.

 

 

명령어 중단 (후면 + stop)


$ 명령어
Ctrl + Z

 

재실행(forground에서 작업 진행)

 

fg