프로세스 개념
프로세스의 부모-자식 관계
- 리눅스에서 모든 프로세스는 부모-자식 관계를 가짐
- 리눅스 시스템을 부팅할 때 스케줄러가 실행한 프로세스인 systemd와 kthreadd 프로세스를 제외하고,
모든 프로세스는 부모 프로세스를 가짐
프로세스 종류
- 데몬 프로세스
- 데몬은 평소에는 대기 상태 - 서비스 요청이 들어오면 서비스 제공 -- 다시 대기모드
- 강제로 종료시키기 전에는 계속 살아있음
- 죽지 않음 ( systemd , kthreadd )
- 고아 프로세스
- 자식 프로세스는 종료 시 부모 프로세스로 회귀,
그러나 자식 프로세스가 아직 실행 중에 부모 프로세스가 먼저 종료되면 자식 => 고아 프로세스
이 경우 1번 프로세스(systemd) 가 새로운 부모 프로세스가 되어 고아 프로세스의 작업을 종료
- 자식 프로세스는 종료 시 부모 프로세스로 회귀,
- 좀비 프로세스
- 자식 프로세스는 종료 시 부모 프로세스에 종료 정보(exit status)를 보내고, 부모 프로세스가 이 정보를 받으면 자식 프로세스는 프로세스 테이블 목록에서 삭제되지만, 자식 프로세스가 실행을 종료했는데도 목록에 남아 있는 경우
프로세스 관리 명령
프로세스 목록 출력 / 정보 검색
ps : 실행중인 프로세스 정보 출력
[ 유닉스 옵션 ]
ps -e : 실행 중인 모든 프로세스의 정보 출력
ps -f : 프로세스의 상세 정보 출력
[ BSD 옵션 ]
ps -a : 터미널에서 실행한 프로세스의 정보 출력
ps -e
출력 내용이 위로 스크롤되어 프로세스 목록을 제대로 확인하기 어렵기 때문에
| (파이프) 와 more 나 less 명령을 함께 사용하여 페이지 단위로 출력
∴ ps -e | more
ps -f
UID PID PPID C STIME TTY TIME CMD
user1 2115 2057 0 13:11 pts/0 00:00:00 bash
user1 5214 2115 0 15:41 pts/0 00:00:00 ps -f
∴ user1 은 bash 를 13시 11분에 0번 터미널에서 실행하고 있으며, 부모 프로세스의 PID(PPID)는 2057번이다.
▲ ps -f 의 출력 정보
UID 프로세스를 실행한 사용자 ID SMITE 프로세스의 시작 날짜/시간 PID 프로세스 번호 TTY 프로세스가 실행된 터미널의 종류, 번호 PPID 부모 프로세스 번호 TIME 프로세스 실행 시간 C CPU 사용 % CMD 실행중인 프로그램 이름(명령)
ps a
PID TTY STAT
957 tty1 R : 실행 중 (running)
975 tty1 etc . . .
ps 명령으로 특정 프로세스 정보 검색
ps -ef | grep bash
∴ bash 가 포함된 정보만 찾음
프로세스 종료
- 시그널 ?
- 프로세스에 무언가 발생했음을 알리는 간단 메세지.
이 메세지에는 무엇이 발생했는지를 나타내는 미리 정의된 상수를 사용함.
시그널은 번호로 구분되며 이름을 가짐 - 시그널을 받은 프로세스는 기본적으로 종료됨
- 리눅스에서 지원하는 시그널의 목록은 kill -l 명령으로 확인
- 프로세스에 무언가 발생했음을 알리는 간단 메세지.
주 사용 시그널
SIGINT 2 종료 인터럽트로 사용자가 Ctrl+c 입력시 발생
SIGKILL 9 종료 이 시그널을 받은 프로세스는 무시할 수 없으며 강제 종료됨
SIGTERM 15 종료 kill 명령이 보내는 기본 시그널. 우아하게 끝냄 ( 저장, 정리를 모두 마치고 )
kill 명령으로 프로세스 종료
- kill 명령에서 시그널을 지정하지 않을 경우 15번 시그널로 간주.
kill [-시그널] PID
ex) kill 1001 kill -15 1001 kill -9 1001
작업 예약
at : 예약한 명령을 정해진 시간에 실행
crontab : 지정 시간에 반복 실행하도록 설정
연습문제
01 | 일반 프로세스와 데몬 프로세스의 차이를 설명하시오.
더보기
데몬 프로세스는 소멸하지 않음
02 | ps -f 명령의 결과가 다음과 같을 때 프로세스의 부모-자식 관계를 설명하시오.
$ ps -f
UID PID PPID C STIME TTY TIME CMD
user1 15761 15721 0 18:14:17 pts/0 0:00 vi /etc/host
user1 15721 15710 0 18:14:09 pts/0 0:00 sh
user1 15710 15701 0 18:12:59 pts/0 0:00 -bash
더보기
PID 15721은 PID 15761의 부모 프로세스이며,
PID 15710은 PID 15721의 부모 프로세스이고,
PID 15701은 PID 15710의 부모 프로세스이다.
04 | PID가 5000인 프로세스를 kill 5000 명령으로 종료하려는데 종료되지 않는다. 이 프로세스를 강제로 종료하려면 어떻게 해야 하는지 설명하시오.
더보기
kill –9 5000
'OS > Fedora Linux' 카테고리의 다른 글
페도라 리눅스 Chapter 11 네트워크 설정 (0) | 2021.06.19 |
---|---|
페도라 리눅스 Chapter 10 사용자 관리 (0) | 2021.06.19 |
페도라 리눅스 Chapter 09 소프트웨어 관리 (0) | 2021.06.19 |
페도라 리눅스 Chapter 08 리눅스의 부팅과 종료 (0) | 2021.06.03 |
페도라 리눅스 Chapter 07 파일 시스템, 디스크 관리 (0) | 2021.06.03 |