본문 바로가기
Infra & Security Eng/Linux Fundamentals

리눅스 프로세스(프로그램과 프로세스, 프로세스 계층 구조, 컨테이너, 포그라운드와 백그라운드, 프로세스 명령어)

by 엔지니어 E 2026. 1. 22.
반응형

리눅스  프로세스의 구조와 관리

리눅스 시스템을 운영하다 보면 프로그램과 프로세스라는 용어를 자주 접하게 된다. 얼핏 비슷해 보이지만 이 둘의 차이를 명확히 아는 것이 중요하다. 오늘은 리눅스 터미널 환경에서 프로세스가 어떻게 생성되고 관리되는지 정리 해본다 

 

프로그램이 프로세스가 되는 과정 

프로그램: 보조 기억 장치에 저장된 실행 파일 상태 (ex. /etc/passwd, /bin/bash 등이 프로그램이라고 보면 됨)
프로세스: 프로그램이 메모리에 올라가 CPU에 의해 실행 중인 상태
* 부모 프로세스와 PID가 반드시 있음

* PID(Process ID): 프로세스가 실행되면 운영체제로부터 고유 번호를 할당 받음. PID를 할당받지 못하면 프로그램은 실행 될 수 X

 

💡참고사항 

실행되면 안되는 프로그램들이 있다면 부모가 누구인지 추적함. 프로세스는 1:1 로 매칭이 된다. Filezilla(클라이언트)들이 많더라도 1:1 매칭이므로 vsftpd(서버)는 메모리에 복사해서 사용해야 한다. 

 

프로세스의 계층 구초(부모와 자식)

리눅스의 모든 프로세스는 부모-자식 관계를 맺으며 실행됨

부모 프로세스: 다른 프로세스를 실행시킨 주체 (ex. ls(자식)를 실행한 /bin/bash(부모)
PID 1: 시스템이 부팅될때 가장 먼저 실행되는 프로세스. 모든 프로세스의 조상 
PID 0: 커널 내부의 프로세스. 사용자가 접근할 수 없는 영역
pstree: 프로세스들이 어떻게 연결되어 실행 중인지 트리 구조로 한눈에 보여주는 명령어 

핵심포인트: 보안 문제가 생겼을때 해당 프로세스의 부모 프로세스를 추적하면 원인 파악이 가능

 

프로세스 격리와 컨테이너

최근 많이 쓰이는 컨테이너 기술은 프로세스의 특성을 활용한 것

컨테이너 환경에서 프로세스가 자신을 PID 1번이라고 인식하도록 격리시켜 실행 한다. 독립된 환경을 만들어 안전하게 프로그램을 돌리는 방식 * 프로그램을 컨테이너로 실행

 

실행방식: 포그라운드와 백그라운드

터미널에서 프로그램을 어떻게 구동하느냐에 따라 종류가 두 가지로 나뉜다 

포그라운드: 터미널을 점유하는 방식. 프로그램이 끝날 때까지 다른 명령어를 입력할 수 없음 
백그라운드: 터미널을 점유하지 않고 뒤에서 실행되는 방식으로 터미널에 영향을 안 미친다. 보통 서버 프로그램(데몬)이 이 방식으로 돌아간다

* 주의: 터미널 종료시 백그라운드 프로세스도 함께 종료됨

프로세스 추적, 제어 명령어 

ps(Proccess Status)
현재 어떤 프로세스가 떠 있는지 확인 

# ps -f: 프로세스의 상세정보(부모 PID 등) 를 추적 
# ps -ef: 시스템 내의 모든 프로세스를 나열

kill  - 현재는 잘 사용하지 않고 있음
프로세스에 특정 신호를 보내 제어

# kill -l 보낼 수 있는 시그널 목록을 확인
# kill -l 목록에서 SIGKILL(9번): 프로그램이 응답하지 않을 때 강제로 종료하는 가장 강력한 신호