데몬
데몬의 개념을 이해하고 좀비 프로세스, 고아 프로세스와 차이점을 알아본다.
그림으로 배우는 리눅스 구조 정리한 내용
데몬 (Daemon)
데몬은 백그라운드에서 독립적으로 실행되는 상주 프로세스이다. 시스템 시작 시 실행되어 시스템 종료 시까지 지속적으로 작동한다. 시스템 유지 및 관리를 위해 지속적으로 실행되어야 하는 프로세스에 적합하다. (예: 네트워크 서비스, 스케줄링 데몬(Cron), 로깅 서비스 등)
•
시스템 서비스(예: sshd, httpd)를 제공하기 위한 프로세스.
•
단말(TTY)에 연결되지 않으며 독립적인 세션을 갖는다.
•
부모 프로세스 종료 후 init 프로세스(PID=1)가 부모로 설정된다.
데몬 프로세스는 ps ajx 명령어를 사용해 확인할 수 있다.
# ps ajx
Shell
복사
•
실제로는 데몬의 부모 프로세스가 init(PID 1)로 설정된다. PPID가 0으로 나타나는 이유는 특정 상황에서 커널이나 컨테이너화된 환경에서의 표시 방식 때문이다.
•
세션 ID(SID)는 PID와 동일하다.
•
TTY 값이 '?'로 나타나는 것은 해당 프로세스가 단말에 연결되지 않았음을 의미한다. 데몬은 독립적으로 실행되며, 단말 연결이 필요하지 않기 때문에 '?'로 표시된다.
일반적으로 SIGHUP 시그널은 단말 연결이 끊겼을 때 프로세스를 종료하는 용도로 사용된다. 하지만 데몬에서는 단말이 존재하지 않으므로, SIGHUP 시그널을 설정 파일을 다시 읽거나 재로드하는 기능으로 활용한다.
마무리
•
좀비 프로세스는 자원 낭비와 성능 저하를 초래할 수 있으므로 부모 프로세스의 설계를 점검해야 한다.
•
고아 프로세스는 커널에서 자동으로 관리되므로 특별한 문제가 없다.
•
데몬은 시스템의 핵심 서비스로 지속적인 백그라운드 작업에 사용된다.
구분 | 좀비 프로세스 | 고아 프로세스 | 데몬 |
발생 원인 | 자식 프로세스 종료 후 부모가 상태를 회수하지 않음 | 부모 프로세스가 먼저 종료됨 | 시스템 서비스 제공 목적으로 독립적으로 실행 |
상태 | 종료된 상태 | 실행 중 | 실행 중 |
부모 프로세스 | 원래 부모 프로세스 | init 프로세스(PID=1)로 변경됨 | init 프로세스(PID=1)로 변경됨 |
단말 연결 | 있음 | 있음 | 없음 |
관리 주체 | 부모 프로세스 | 커널(init 프로세스) | init 프로세스 |
문제점 | 자원 낭비 및 성능 저하 가능성 | 시스템 자원에 큰 영향 없음 | 없음 |
용도/의미 | 비정상 종료 상태 | 정상적인 프로세스 관리 | 지속적인 서비스 제공 |
예시 | 상태를 회수하지 않은 프로세스 | 부모 종료 후 실행 중인 프로세스 | sshd, httpd, cron 등 시스템 데몬 |
Related Posts
Search