프로세스 정보 확인(ps)

1. ps(Process Status) 명령

- ps 명령은 시스템에 상주하는 프로세스 정보를 알려줌

1) ps 명령어 도움말


- 주요 옵션

 옵 션

 설 명

 -f

 full format listing. 

 -l

 -f 보다 더 많은 정보를 출력

 -a

 최근에 많이 실행된 제어 터미널을 가진 프로세스의 정보를 출력

 -A, -e

 현재 시스템에서 실행 중인 모든 프로세스 정보를 출력


2) ps -ef 명령어 (가장 많이 사용됨)

- -e옵션:  every의 약자, 현재 실행 중인 모든 프로세스 정보를 출력

- -f옵션: full listing의 약자


- 컬럼 설명

 구 분

 설 명

 UID

 User ID의 약자, CMD에 보이는 프로세스를 실행 시키는 프로세스의 소유자를 의미

 PID

 Process ID의 약자, 실행된 프로세스에 부여된 숫자를 의미

 PPID

 Parents Process ID의 약자, 프로세스를 생성한 부모 프로세스의 PID

 C

 프로세스 스케줄링을 위한 CPU 사용량, 현재는 사용되지 않는 필드

 STIME

 Start Time, 프로세스가 시작된 시간을 '월:일' 혹은 '시:분:초'로 나타냄

 TTY

 Teletype의 약자, 프로세스가 연결된(수행되고 있는) 제어 터미널을 표시, '?'는 제어 터미널에 연결 되어 있지 않음을 나타냄

 TIME

 프로세스에 의해 사용된 CPU 사용 시간을 '시:분' 형태로 나타냄 

 CMD

 실행된 프로세스 명을 나타냄


프로세스간 통신(시그널)

- UNIX 시스템은 다양한 종류의 프로세스 간 통신(IPC, Inter Process Communication) 방법을 지원

*참고: 프로세스 간의 통신(IPC: InterProcess Communication)

- 하나의 운영체제에 존재하는 프로세스 간의 통신 방법

- 예: 파이프(Pipe), 시그널(Signal), 메시지 큐(Message Queue), 공유 메모리(Shared Memory), 세마포어(Semaphore) 등

- 시그널(Signal): UNIX 시스템에서 지원하는 소프트웨어 인터럽트, 프로세스는 시그널을 이용하여 다른 프로세스에게 이벤트를 전달할 수 있음, 전달된 이벤트를 프로세스 간 통신 수단으로 사용 가능


1. 시그널이 발생하는 경우

- 외부에 의해서

- 에러에 의해서

- 이벤트에 의해서

- 인위적인 시그널 발생


2. kill 명령어

1) kill 명령어 도움말

- 주요옵션

 옵 션

 설 명

 -l

 지원 가능한 시그널 목록을 출력

 -9 (-SIGKILL, -KILL)

 시그널 9(=KILL)를 받은 프로세스는 종료됨

 

 시그널 옵션이 생략된 경우, SIGTERM 시그널이 발생됨

2) UNIX 시스템에서 지원하는 주요 시그널들

- 지원 가능한 시그널 목록을 출력


- 주요 시그널 설명

 시그널 명

 번 호

 의 미

 SIGHUP

 1

 Hang up, 터미널 연결이 끊어지는 경우에 프로세스에게 전달되는 시그널, 환경설정 파일의 재설정에 사용(데몬 프로그램에서 많이 사용, 재시작 후 환경 설정 파일을 다시 읽어들임)

 SIGINT

 2

 Interrupt, [Ctrl+c] 조합키를 누르면 포그라운드 프로세스 그룹 내 모든 프로세스에게 전달되는 시그널, 이 시그널을 받은 프로세스는 디폴트로 종료됨

 SIGQUIT

 3 

 [Ctrl+\] 조합키를 누르면 전위 프로세스 그룹 내에 모든 프로세스에게 전달되는 시그널, 이 시그널을 받은 프로세스는 디폴트로 종료되며 core파일을 생성함

 SIGFPE

 8 

 커널에 의해 발생, 산술 연산 에러(0으로 나누는 경우 등)를 내는 프로세스에게 시그널이 전달

 SIGKILL

 9

 Kill, 무시하거나 임의로 처리 할 수 없는 시그널, 이 시그널을 받은 프로세스는 종료됨

(강제 종료)

 SIGSEGV

 11

 커널에 의해 발생, 잘못된 메모리를 참조하는 프로세스에게 전달되는 시그널

 SIGALRM

 14

 alarm()함수가 설정된 타이머에 의해 발생됨

 SIGTERM

 15

 Terminate, kill 명령어가 보내는 기본 시그널, 이 시그널을 받은 프로세스는 디폴트로 종료됨

 SIGCHLD

 17

 프로세스의 종료나 정지의 경우에 부모 프로세스에게 전달되는 시그널

 SIGCONT

 18

 Continue, STOP 시그널로 정지된 프로세스를 복원함

 SIGSTOP

 19 

 Stop, 프로세스를 정지시키는 프로세스 제어 시그널, 무시하거나 임의로 처리할 수 없음


3. 좀비 프로세스(Zombie Process)

- 좀비 프로세스는 kill 시그널을 받아도 종료되지 않음

1) 원인: 이미 현재 프로세스에 대한 모든 정보는 메모리에서 사라졌지만, 부모 프로세스가 정상적인 종료 처리를 하지 못해 발생됨

2) 좀비 프로세스에 대한 해결책: 리부팅, 리부팅이 되면 모든 메모리 정보가 새롭게 초기화 되기 때문에 좀비 프로세스에 대한 내용도 사라짐

3) UNIX/Linux 시스템의 프로세스 종료 과정


- 정상적인 상태라면 ps를 통해 프로세스 확인 시 Z상태(Zombie)를 보기 쉽지 않음

- 지속적으로 좀비상태가 나타난다면 부모 프로세스의 프로그램 오류(시그널 처리를 적절히 처리 해주지 않은 경우) 또는 커널 오류에 의한 비정상적인 상태일 확률이 높음