[System] 데몬(Daemon) 서비스의 개념
데몬(Daemon)은 사용자와는 무관하게 동작하며,
시스템 혹은 서비스를 위해 상시/이벤트 기반으로 동작하는 프로세스를 말합니다.
일반 프로그램과의 차이
| 구분 | 일반 프로그램 | 데몬 |
|---|---|---|
| 실행 주체 | 사용자 실행 | 시스템 실행 |
| 실행 목적 | 작업 수행 후 종료 | 요청 대기 및 반복 수행 |
| 실행 시간 | 일회성 | 길거나 지속적 |
| 입력 방식 | 터미널 또는 입력 | IPC, 네트워크, 이벤트 등 |
| 종료 방식 | 작업 수행 후 종료 | 시스템 종료 시 종료 |
단순 백그라운드 프로세스와의 차이
리눅스에서 &로 프로그램을 실행할 수 있는데, 이것과는 차이가 명확합니다.
| 구분 | 백그라운드 실행 | 데몬 |
|---|---|---|
| 터미널 종속성 | 있음 | 없음(독립) |
| 시스템 관리 | 없음 | systemd 등에서 관리 |
| 자동 시작 | 불가 | 가능 |
| 로그 관리 | 직접 처리 | journald/syslog/dlt 등 사용 |
| 서비스 개념 | 없음 | 있음 |
데몬의 필요성
데몬은 기본적으로 항상 실행 중이고, 요청에 따라 동작합니다.
sshd, udevd, dbus-daemon 등으로 다양합니다.
- 클라이언트-서버 모델에서 서버와 상시적으로 연결되어 클라이언트의 요청을 처리할 수 있도록 준비할 수 있습니다.
데몬의 동작 방식
| 단계 | 설명 |
|---|---|
| 초기화 | 필요 리소스 준비 |
| 대기 | 이벤트/요청이 올 때까지 대기 |
| 처리 | 요청에 따라 작업 수행 |
- 데몬은 위와 같은 동작을 계속해서 반복하도록 백그라운드에서 실행되고 있습니다.