(1) 포그라운드 모드와 백그라운드 모드
: 대화식 쉘의 기본적인 목적은 터미널로부터 실행 명령을 받아서 그 명령이 지정한 프로그램을 실행하도록 프로세스를 생성하는 것이다. 

○ 포그라운드 모드 (Foreground Mode)
: 쉘에 의해서 생성된 프로세스가 쉘의 터미널 제어권을 넘겨받아 실행중인 상태.

○ 백그라운드 모드 (Background Mode)
 : 쉘에 의해서 생성된 프로세스가 쉘의 터미널 제어권 없이 실행중인 상태.


(2) 프로세스 그룹과 터미널
: 쉘에 의해 실행된 프로세스는 일반적으로 포그라운드 모드에서 실행된다. 쉘이 가지고 있던 터미널 제어권을 생성된 프로세스 그룹에 넘겨주기 때문이다. 모든 프로세스는 하나의 프로세스 그룹에 소속된다.

○ 터미널을 통해 입력된 명령어는 쉘에 의해 실행된다.
○ 이때 쉘이 생성한 프로세스는 프로세스 그룹의 리더가 되고, 자신의 PID와 동일한 PGID를 갖는 프로세스 그룹에 소속된다.
○ 쉘은 프로세스 그룹에 터미널 제어권을 제공하여 포그라운드 프로세스 그룹이 되도록 한다.
○ 프로세스 그룹의 리더가 종료되는 경우 터미널 제어권은 다시 쉘이 갖게 된다.


(3) 프로세스 제어 명령어
: 하나의 로그인 쉘 환경에서는 하나의 포그라운드 프로세스와 복수의 백그라운드 프로세스가 있을 수 있다.

○ 백그라운드 프로세스 모니터링 : jobs
: jobs 명령은 현재 로그인 쉘에서 실행중인 백그라운드 프로세스를 모니터링할 때 사용한다.

- 백그라운드 모드로 실행 : '&'기호를 사용하여 백그라운드 모드로 실행 (ex) vi test1 &
- 백그라운드 모드로 전환 :  [Ctrl+z] 조합키를 사용하여 포그라운드 모드를 백그라운드로 전환
- jobs 명령어를 통해 백그라운드로 실행중인 프로세스의 작업번호 확인 : [ ] 안의 숫자

○ 포그라운드 모드로 전환 : fg
: '$ fg %작업번호' 를 통해 백그라운드 모드로 실행중인 프로세스를 포그라운드 모드로 전환할 수 있다.

○ 정지된 프로세스를 백그라운드 모드로 전환 : bg
: '$ bg %작업번호'를 통해 [Ctrl+z] 조합키로 인해 정지된 프로세스를 백그라운드 모드로 전환할 수 있다.

○ 실행중인 프로세스 종료 : kill
: '$ kill %작업번호'를 통해 실행중인 프로세스를 종료할 수 있다.

 
by 민트앤라떼 2013. 1. 31. 22:06