배우는 내용 : [ 명령어 정지, jobs, 포그라운드 (fg), 백그라운드(bg) ]

셸에서 바라본 처리 단위를 잡 (job) 이라고 한다.

$ ls -l / | cat -n | less

    위에서 잡은 1개 생성되는 프로세스는 3개 ( ls -l / , cat -n , less)

* 잡은 셸 별로 관리 → 중복된 잡 번호가 할당 될 수도 있다.

 

명령어를 일시 정지하는 법

명령어 실행 후
ctrl + z

 

예시

ubuntu:~$ man bash

[1]+  Stopped                 man bash

ubuntu:~$ jobs
[1]+  Stopped                 man bash

ubuntu:~$ vim ~/.bashrc

[2]+  Stopped                 vim ~/.bashrc

ubuntu:~$ jobs
[1]-  Stopped                 man bash
[2]+  Stopped                 vim ~/.bashrc

ubuntu:~$ jobs -l
[1]- 26288 Stopped                 man bash
[2]+ 26303 Stopped                 vim ~/.bashrc

 

출력 내용 [1] - 26288 Stopped man bash
의미 잡 번호  + 바로 이전에 실행된 작업 프로세스 ID 해당 작업이 일시 중지 중지된 명령어
추가 설명
+ 현재 쉘 세션이 기본적으로 다루게 될 작업
fg 나 bg 명령어로 조작될 때 기본적으로 선택되는 작업
+ 가 붙은 다음에 선택될 작업을 의미
fg 나 bg 명령어로 조작하려면  작업번호를 입력해주어야 한다. ( "fg %1" )

 

fg 명령어

포그라운드 (foreground, fg) : 사용자의 입력을 받아 들일 수 있는 잡의 상태

$ fg %<잡 번호>

 - <잡 번호>를 포그라운드로 전환

 

사용 예

$ vim file1.txt

# 편집 중에 ctrl + z 입력

$ ls / # 파일 위치 확인
$ fg   # vim 으로 전환

 

bg 명령어

백라운드 (background, bg) : 사용자가 조작할 수 없지만 실행 중인 상태

 

백그라운드에서 중지된 잡 실행

$ bg %<잡 번호>

 

바로 백그라운드에서 작업을 실행

<명령어> <실행할 내용> &
$ cp file.txt file-cp.txt &

 

백그라운드와 포그라운드에서 작업을 하는 이유

포그라운드 (foreground, fg) : 사용자의 입력을 받아 들일 수 있는 잡의 상태

백라운드 (background, bg) : 사용자가 조작할 수 없지만 실행 중인 상태

이점 설명
시간절약 긴 시간이 걸리는 작업을 백그라운드에서 실행 하여 작업이 완료될 때 까지 기다리지 않고
포그라운드에서 다른 작업이 가능
멀티 테스킹 한 터미널 세션에서 여러 작업을 동시에 실행가능
자원 활용 최적화 여러 프로세스가 동시에 실행되어야 하는 환경에서,
사용자는 중요한 작업을 포그라운드에서 모니터링하고,
덜 중요한 작업은 백그라운드에서 실행하여 시스템 자원을 효율적으로 활용가능

잡과 프로세스 종료

ctrl + c 로 포그라운드로 실행 중인 잡 종료 가능

$ kill %<잡 번호>
$ kill <프로세스 ID(PID) >

# 같은 명령어 TERM (종료) = 15 (TERM 의 고유 번호)
kill 4695
kill -TERM 4695
kill -15 4695

 

시그널 전체 목록의 예

ubuntu:~$ kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
......

+ Recent posts