
현재 시스템에서 실행중인 프로그램을 말한다.
PID 를 가진다.PID 는 시스템의 전원이 꺼지기 전까지, 서로 겹치지 않는다.ps 정리현재 실행중인 프로세스의 목록을 보는 명령 : ps
ps [옵션]〈유닉스 옵션〉
-e : 시스템에서 실행 중인 모든 프로세스의 정보를 출력한다.-f : 프로세스의 자세한 정보를 출력한다.-u uid : 특정 사용자에 대한 모든 프로세스의 정보를 출력한다.-p pid : pid로 지정한 특정 프로세스의 정보를 출력한다.〈BSD 옵션〉
a : 터미널에서 실행한 프로세스의 정보를 출력한다.u : 프로세스 소유자 이름, CPU 사용량, 메모리 사용량 등 상세 정보를 출력한다.x : 시스템에서 실행 중인 모든 프로세스의 정보를 출력한다.〈GNU 옵션〉
--pid PID 목록 : 목록으로 지정한 특정 PID의 정보를 출력한다.ps ps -ef ps aux주로 사용하는 함수를 정리해보면,
ps -ef | grep xxxx : xxxx가 들어간 프로세스 검색ps -f : 프로세스의 자세한 정보 출력ps -aux | grep xxxx : 특정 프로세스 검색(ps -ef | grep 과 비슷)
ps -ef는 유닉스 스타일, PPID(부모 PID) 확인 가능
ps aux는 BSD 스타일, CPU/메모리 사용률 확인 가능


| 문자 | 의미 | 비고 |
|---|---|---|
| R | 실행 중 (running) | |
| S | 인터럽트가 가능한 대기 (sleep) 상태 | |
| T | 작업 제어에 의해 정지된 (stopped) 상태 | |
| Z | 좀비 프로세스 (defunct) | |
| STIME | 프로세스의 시작 날짜나 시간 | |
| s | 세션 리더 프로세스 | BSD 형식 |
| + | 포그라운드 프로세스 그룹 | BSD 형식 |
| l (소문자 L) | 멀티스레드 | BSD 형식 |
포그라운드 프로세스는 사용자가 입력한 명령에 대한 결과가 출력될 때까지 기다려야 하는 방식으로 처리되고,
백그라운드는 이와 다르게 명령을 실행해두고 백그라운드에서 처리할때까지 포그라운드 영역에서 다른 작업을 진행할 수 있다.
백그라운드 작업으로 실행할 때는
./iot_server 5000 &

이런 식으로 &를 뒤에 붙여주면 된다.
백그라운드 작업을 확인할 수 있다.

현재 서버 1개와, 클라이언트 2개를 각각 백그라운드로 돌려 둔 상황이다. jobs 명령어를 통해 백그라운드에서 돌아가고 있는 작업 목록을 확인 가능하다.
맨 아래쪽에 있는 iot_socket.d에서 실행된 ./iot_client 127.0.0.1 5000 KYM_LIN & 의 같은 경우, ps -ef | grep iot 명령어에서 아래와 같이 출력되었다.
ubuntu 107053 94211 0 19:19 pts/1 00:00:00 ./iot_server 5000
ubuntu 107626 101079 0 19:21 pts/0 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn iot
[1]- 완료 ./iot_client 127.0.0.1 5000 KYM_LIN
[2]+ 완료 ./iot_client 127.0.0.1 5000 KYM_LIN
여기서 [1] , [2] 옆의 +, - 는 작업 순서 표시와 관련이 있다.
| 명령 | 기능 |
|---|---|
| Ctrl + Z 또는 stop [%작업 번호] | 포그라운드 작업을 정지한다 (종료하는 것이 아니라 잠시 중단하는 것이다). |
| bg [%작업 번호] | 작업 번호가 지시하는 작업을 백그라운드 작업으로 전환한다. |
| fg [%작업 번호] | 작업 번호가 지시하는 작업을 포그라운드 작업으로 전환한다. |

백그라운드 -> 포그라운드로 가져올 때는 bg %작업번호 를 사용하면 된다.