사용자가 명령을 입력하고 이를 해석하여 실행한 뒤 결과를 화면에 출력한다. 사용자는 결과를 확인 한 뒤 다른 명령어를 입력하는 대화식으로 작업을 수행하게 되는 방식이다.
포그라운드 방식으로 처리되는 프로세스를 포그라운드 프로세스라고 한다.
포그라운드 방식의 단점은 한 번에 하나의 명령을 실행하여 동시에 여러 프로세스를 실행하기 어려운 점이다.
백그라운드 방식은 프로세스가 실행되는 동안 뒤에서 다른 프로세스가 실행될 수 있다. 여러 개의 프로세스를 동시에 실행 가능하다.
#포그라운드 방식
$ command
$ ping google.com
# 백그라운드 방식 - & 추가
$ command &
$ ping google.com &
# nohup 명령어 (no hang up)
$ nohup command &
$ nohup ping google.com &
여기서 백그라운드 방식은 &
를 붙여서 실행하는데, 백그라운드 실행시 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료된다. 사용자 터미널 세션이 종료되어도 프로세스를 실행하고 싶다면 nohup
명령어를 사용한다.
ps
현재 실행중인 프로세스의 목록을 확인 할 수 있다.
- PID : 프로세스 번호
- TTY : 프로세스가 실행된 터미널의 종류와 번호
- TIME : 프로세스 실행 시간
- CMD : 실행되고 있는 프로그램의 이름(명령)
더 자세한 옵션
-e
: 시스템에서 실행중인 모든 프로세스의 정보를 출력-f
: 프로세스의 자세한 정보를 출력-u uid
: uid 로 특정한 사용자에 대한 모든 프로세스의 정보 출력-p pid
: pid 로 지정한 특정 프로세스의 정보 출력a
: 터미널에서 실행한 프로세스의 정보를 출력u
: 프로세스 소유자의 이름, CPU 사용량, 메모리 사용량 등 상세 정보 출력x
: 시스템에서 실행 중인 모든 프로세스의 정보 출력가장 자주 사용하는 옵션 방식
ps -ef
- UNIX , ps aux
- BSDps -ef
출력 정보ps aux
출력 정보pstree
컴퓨터의 전체 프로세스 구조 확인 명령어
트리구조로 도식화하여 프로세스를 확인할 수 있으며, 부모 관계를 파악할 수 있다.
터미널에서 프로그램은 ctrl + c
로 종료할 수 있다. 단축키 사용시 이벤트가 발생되고, 이러한 이벤트를 프로세스에 전달하는 과정이 필요하다. 이 때, 이벤트를 프로세스에 알려주기 위해서 사용하는 것을 시그널(Signal) 이라고 한다.
특정 프로세스에 작업 중지, 실행 종료, 대기, 재시작, 강제 종료 등의 시그널을 전달하기 위해 kill
명령어를 사용한다. kill -l
사용하면 사용할 수 있는 시그널의 종류를 확인 할 수 있다.
주 사용 시그널
ctrl + c
ctrl + z
사용 방법
$ kill -<시그널번호 or 시그널명> %작업번호
$ kill -<시그널번호 or 시그널명> PID
ctrl + z
)kill
명령)[1]
, [2]
는 작업번호이다.+
는 현재 처리되고 있는 작업을 의미, -
다음에 작업할 프로세스를 의미한다.fg %<작업번호>
명령을 통해 포그라운드로 전환 가능