일반적으로 프로세스는 실행중인 프로그램을 말합니다. 여러 개의 프로그램을 동시에 실행하는 것을 멀티태스킹이라고 하고, 이 프로세스를 관리하는것은 운영체제의 주요 역활 중 하나 입니다.
리눅스의 프로세스는 포그라운드(foreground)와 백그라운드(background)방식으로 동작합니다. 포그라운드 방식은 키도으 입력을 받아서 동작하는 방식으로 실행되면 다른 작업을 처리할 수 없습니다. 백그라운드 방식은 사용자와의 대화 없이 실행되는 작업 방식입니다.
리눅스에서 포그라운드 방식으로 작업을 실행하면 다른 작업을 실행할 수 없고, 작업이 끝날때까지 대기합니다. 백그라운드 방식은 명령어 뒤에 &를 붙여서 실행하고, 다른 명령어를 추가적으로 입력할 수 있습니다.
백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됩니다. 작업시간이 오래 걸리는 작업인 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때 까지 프로세스를 실행합니다.
# 포그라운드 방식
$ sample.sh
# 백그라운드 방식 -- &추가
$ sample.sh &
# nohup 커맨드(no hang up)
$ nohup sample.sh &