프로세스란?
실행중인 프로그램을 의미한다.일반적으로 사용자가 컴퓨터에서 실행시키기 위해 작성한 프로그램과 이 프로그램의 실행에 필요한 입력 데이터를 묶어서 작업이라고 하는데, 이러한 작업이 컴퓨터 시스템에 의해 실행되어 운영체제(커널)에서 이 사실이 전해지면 이 작업이 커널에 등록되고 이렇게 등록된 작업을 이제부터 프로세스라 부른다.
즉, 커널에 등록되고 커널의 관리하에 있는 작업이 되면 프로세스이다.
프로세스의 종류
부모 프로세스 | 다른 프로세스를 생성할 수 있는 프로세스 |
자식 프로세스 | 부모 프로세스로부터 만들어지는 프로세스
정상적으로 자식프로세스 종료 후 부모프로세스 종료 |
데몬 프로세스 | 일반적으로 사용자가 실행시키지 않고 커널에 의해 구동, 백그라운드로 동작한다. 특정 서비스를 제공하기 위해 구동 (WIndows에서 서비스의 존재) |
고아 프로세스 | 일반적으로 자식프로세스는 종료되면 부모 프로세스로 되돌아 가는데 부모 프로세스가 먼저 종료된 경우에 자식 프로세스를 고아 프로세스라고 한다. 고아 프로세스는 init 프로세스가 처리해준다. (요즘은 systemd로 대체되었다.) |
좀비 프로세스 | 정상적으로 프로세스를 종료했지만 자원을 반납하지 않은 상태로 계속 남아있는 상태. 자원을 점유한 상태에서 동작하지 않는 프로세스 |
ps 명령어 : 원도우의 작업관리자의 역할을 한다.
-e : 시스템 상의 모든 프로세스 정보를 출력
-f : 상세한 정보 출력
일반적으로 ps -ef 명령어를 많이 사용한다. 이에 따른 결과는 다음과 같이 출력된다.
UID | 프로세스 소유자 ID |
PID | 프로세스 ID |
PPID | 부모 프로세스 ID |
C | 스케쥴링을 위한 CPU 사용량, 별로 의미 없는 필드 |
STIME | 프로세스 시작 시간 |
TTY | 장치 번호 (터미널에서 실행된 프로세스가 아닌것들) |
TIME | 프로세스에 대한 누적 실행 시간 |
CMD | 명령 옵션 + 아규먼트(Argument) |
ps -ef | grep [알고싶은 것(이름, pid ..)] : 알고싶은것에 대한 결과값만 나온다.
pstree : 트리 형태로 프로세스 표현
top : cpu 사용량 / 메모리 사용량 을 확인 가능하다 (q 눌러서 종료)
프로세스 제어 명령어
시그널은 프로세스를 제어하기 위해서 프로세스에게 전달하는 신호값이다.
1 | SIGHUP(Sig Hang Up)
프로세스 종료 없이 프로그램을 새로 초기화 |
2 | SIGINT , INTERRUPT, Ctrl + C 명령어 실행 중 중단 명령어 |
3 | SIGKILL, kill, 무시할 수 없는 종료(Strongest) |
4 | SIGTERM, terminate, 무시할 수 있는 종료 |
kill : PID로 프로세스를 제어
ex) kill -9 [PID]
pkill : 프로세스 이름으로 제어
입력된 이름에 해당하는 프로세스 모두 down 가능하다.
ppid 0 : os 커널