
프로세스의 실행방식은 크게 포그라운드와 백그라운드가 있다.
터미널에서 작업할 때, 일반적으로 사용자가 명령을 입력하면 이를 해석하여 실행하고 결과를 화면에 출력한다.
그러면 다시 사용자는 화면에 출력된 결과를 확인하고 또다른 명령어를 입력하는 대화식으로 작업을 수행하게 된다.
이렇게 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다려야 하는 방식을 포그라운드 방식이라고 하며, 이러한 방식으로 처리되는 프로세스를 포그라운드 프로세스라고 한다.
백그라운드 방식을 사용하면 프로세스가 실행되는 동안 뒤에서 다른 프로세스가 실행될 수 있으므로 한 터미널에서 여러 개의 프로세스를 동시에 실행할 수 있다.
이처럼 백그라운드 방식으로 처리되는 프로세스를 백그라운드 프로세스라고 하며, 이러한 백그라운드 작업은 명령의 실행 시간이 많이 걸릴 것으로 예상되거나, 명령을 실행한 후 다른 작업을 해야할 경우 사용한다.
백그라운드 방식은 명령어 뒤에 &를 붙여서 실행하고, 다른 명령어를 추가적으로 입력할 수 있다.
하지만 백그라운드 방식으로 실행해도 사용자의 터미널 세션이 종료되면 실행중인 프로세스도 종료됩니다. 작업시간이 오래 걸리는 작업인 경우 nohup 명령어를 이용하여 백그라운드로 실행하면 사용자의 터미널 세션이 종료되어도 작업이 종료될 때까지 프로세스를 실행합니다.
$ ps
ps 명령은 현재 실행 중인 프로세스의 목록을 확인할 수 있다. ps 명령만으로도 프로세스 목록을 파악할 수 있지만 더 자세한 항목이 필요하다면 여러 옵션과 사용할 수 있습니다.
ps 명령의 결과로 PID, TTY, TIME, CMD가 출력됩니다. 이 각각은 다음과 같은 의미를 가집니다

| 명칭 | 설명 |
|---|---|
| PID | 프로세스 번호 |
| TTY | 프로세스가 실행된 터미널의 종류와 번호 |
| TIME | 프로세스 실행 시간 |
| CMD | 실행되고 있는 프로그램의 이름(명령) |
여기에 옵션을 섞어서 사용하면 더 디테일한 내용을 볼 수 있고, 사용할 수 있는 옵션의 종류는 다음과 같습니다.

나노 편집기를 백그라운드에서 실행을 시킨 화면이다.
이 때 jobs로 현재 실행중인 프로세스를 확인할 수 있다.
다수의 프로세스가 백그라운드에서 작업하는 도중에 필요하다면, fg %작업번호 명령을 사용하여 포그라운드로 전환할 수 있습니다.

kill이라는 명령어를 이용해서 특정 프로세스에 작업 중지, 실행 종료, 대기, 재시작, 강제 종료 등의 시그널을 전달할 수 있다.
주로 사용하는 시그널.
kill -시그널번호(시그널명) %작업번호
kill -시그널번호(시그널명) PID