프로세스 정보 확인(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)를 보기 쉽지 않음
- 지속적으로 좀비상태가 나타난다면 부모 프로세스의 프로그램 오류(시그널 처리를 적절히 처리 해주지 않은 경우) 또는 커널 오류에 의한 비정상적인 상태일 확률이 높음
'보안 > System' 카테고리의 다른 글
[UNIX / Linux] 특수 권한(setuid, setgid, sticky bit) (18) | 2015.06.27 |
---|---|
[UNIX / Linux] 시스템 시작과 종료 (0) | 2015.05.10 |
[UNIX / Linux] 디렉토리 및 파일 관련 명령어 (1) | 2015.05.02 |
[UNIX / Linux] 파일 검색(find) (0) | 2015.05.02 |
[UNIX / Linux] 권한 관리(chmod, chown, chgrp, umask) (13) | 2015.04.30 |
[UNIX / Linux] 디렉토리 관리 (5) | 2015.04.29 |
[UNIX / Linux] 특수 문자(Shell Metacharacter) (0) | 2015.04.28 |
[UNIX / Linux] 파일링크(ln) (0) | 2015.04.27 |
[UNIX / Linux] 입출력 재지정, 파이프 (1) | 2015.04.26 |