프로세스 (Process)
프로세스는 메모리에 적재되어 실행중인 상태를 의미한다.
프로그램은 파일 시스템에 파일 형태로 존재하는 실행 파일이다.
프로세스는 프로그램의 인스턴스(instance)라고도 표현한다.
프로세스는 셸(shell) 프로세스, 유저(user) 프로세스 2가지로 구분한다.
셸 (shell) 프로세스
셸 프로세스는 시스템과 유저 사이에 중간자 역할을 하는 프로세스다.
유저가 시스템에 로그인 했을 때 가장 먼저 마주하는 프로세스다.
유저가 셸 프롬프트에서 명령어를 입력하면 셸 프로세스는 명령어를 해석하고 프로그램을 찾아 실행한다.
예) bash, sh
유저(user) 프로세스
유저가 셸이나 다른 프로세스를 통해서 실행한 프로세스.
유저가 프로세스를 실행하면 유저는 해당 프로세스의 소유자가 된다.
프로그램의 소유자와 프로세스의 소유자는 다를 수 있다. (프로그램에 RW 권한이 없더라도 X권한이 있으면 프로세스의 소유주가 될 수 있다.)
ps -f
명령어로 지금 실행중인 프로세스 목록을 조회하면 아래와 같이 UID, PID, PPID 를 볼 수 있다.$ ps -f UID PID PPID C STIME TTY TIME CMD daeun.k+ 2400 2399 0 21:21 pts/16 00:00:00 -bash daeun.k+ 2656 2400 0 21:22 pts/16 00:00:00 ps -f
- UID : 프로세스의 소유자 ID (프로세스를 실행한 유저의 ID)
- PID : 프로세스 식별번호
- PPID : 부모 프로세스의 식별 번호
ps -f
명령어로 실행된 프로세스의 PPID를 보면 부모 프로세스가 bash(셸 프로세스)인 것을 알 수 있다. 즉 bash가 ps -f
프로세스를 생성한 것.셸 프롬프트로 실행된 프로세스는 모두 셸 프로세스를 부모 프로세스로 갖는다.
자주쓰는 ps
명령어의 aux
옵션
-e
: 다른 소유자의 프로세스를 포함하여 모두 조회-f
: full-format (프로세스를 실행한 명령어, 실행 시각 등)a
: 콘솔 또는 터미널을 사용하는 프로세스u
: user-oriented 형식x
: 데몬 같이 ttys를 제어하지 않는 프로세스를 포함한 것을 조회다른 옵션을 보려면
$ ps --help all
명령어로 조회한다.