## πŸ‘» λ¦¬λˆ…μŠ€μ˜ 보이지 μ•ŠλŠ” μ‘°λ ₯자: 데λͺ¬(Daemon)κ³Ό μœ λ‹›(Unit) {#sec-6e36ad82c8cb} [[λ¦¬λˆ…μŠ€]] μ‹œμŠ€ν…œμ„ μš΄μ˜ν•˜λ‹€ 보면 μˆ˜λ§Žμ€ '데λͺ¬'듀이 λ°°κ²½μ—μ„œ μ›€μ§μž…λ‹ˆλ‹€. 그리고 μš°λ¦¬λŠ” `systemd`λΌλŠ” λ„κ΅¬λ‘œ 이듀을 닀루죠. 이 λ‘˜μ€ μ–΄λ–€ 관계이며, μ™œ 이런 λ…νŠΉν•œ 이름이 λΆ™μ—ˆμ„κΉŒμš”? μ½”λ“œ ν•œ 쀄에 철학이 μžˆλ“―, λ¦¬λˆ…μŠ€ μ‹œμŠ€ν…œμ˜ ꡬ쑰에도 λͺ…ν™•ν•œ 섀계 μ˜λ„κ°€ 담겨 μžˆμŠ΅λ‹ˆλ‹€. ![linux_daemon_and_systemd_concept](/media/editor_temp/6/a66caf8f-e91b-4373-af97-e3f7158d0194.png "systemdκ°€ μ—¬λŸ¬ daemon에 μž‘μ—…μ§€μ‹œλ₯Ό λ‚΄λ¦¬λŠ” 이미지") ## 1. μ™œ '데λͺ¬(Daemon)'인가? : 보이지 μ•ŠλŠ” 곳의 μ˜λ¦¬ν•œ 쑴재 {#sec-facc962b0b1c} '데λͺ¬'μ΄λΌλŠ” 이름은 그리슀 μ‹ ν™”μ—μ„œ μ‹ κ³Ό 인간 μ‚¬μ΄μ—μ„œ 보이지 μ•Šκ²Œ 도움을 μ£ΌλŠ” **'μˆ˜ν˜Έμ‹ (Daemons)'** μ—μ„œ μœ λž˜ν–ˆμŠ΅λ‹ˆλ‹€. 이후 λ¬Όλ¦¬ν•™μž λ§₯μŠ€μ›°μ΄ μ œμ•ˆν•œ 'λ§₯μŠ€μ›°μ˜ 도깨비(Maxwell’s Demon)' 가섀을 거쳐, 1963λ…„ MIT의 κ°œλ°œμžλ“€μ΄ **"μ‚¬μš©μžμ˜ κ°œμž… 없이 λ°°κ²½μ—μ„œ 슀슀둜 μ•Œμ•„μ„œ νŒλ‹¨ν•˜κ³  μΌν•˜λŠ” ν”„λ‘œκ·Έλž¨"** 에 이 이름을 λΆ™μ˜€μŠ΅λ‹ˆλ‹€. * **본질:** 데λͺ¬μ€ μ‚¬μš©μžμ™€ 직접 λŒ€ν™”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 터미널을 끄더라도 λ©”λͺ¨λ¦¬μ— μƒμ£Όν•˜λ©° λ„€νŠΈμ›Œν¬ μš”μ²­μ„ κΈ°λ‹€λ¦¬κ±°λ‚˜ μ‹œμŠ€ν…œ μƒνƒœλ₯Ό κ°μ‹œν•˜λŠ” **'λ°±κ·ΈλΌμš΄λ“œ ν”„λ‘œμ„ΈμŠ€'** κ·Έ 자체λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. ## 2. systemd도 데λͺ¬μΈκ°€? : "데λͺ¬μ„ κ΄€λ¦¬ν•˜λŠ” λ§ˆμŠ€ν„° 데λͺ¬" {#sec-37340e1c3330} λ„€, λ§žμŠ΅λ‹ˆλ‹€. 이름 끝에 뢙은 **'d'** κ°€ κ·Έ μ¦κ±°μž…λ‹ˆλ‹€. `systemd`λŠ” λ¦¬λˆ…μŠ€ 컀널이 λΆ€νŒ…λœ ν›„ κ°€μž₯ λ¨Όμ € μ‹€ν–‰λ˜λŠ” **1번 ν”„λ‘œμ„ΈμŠ€(PID 1)** 이자, λ‹€λ₯Έ λͺ¨λ“  데λͺ¬μ„ 뢀리고 κ΄€λ¦¬ν•˜λŠ” **'λ§ˆμŠ€ν„° 데λͺ¬'** μž…λ‹ˆλ‹€. κ·Έ μ „κΉŒμ§€ [[λ¦¬λˆ…μŠ€]]λŠ” 데λͺ¬λ“€μ„ κ΄€λ¦¬ν•˜λŠ” 방식이 μ€‘κ΅¬λ‚œλ°©μ΄μ—ˆμŠ΅λ‹ˆλ‹€. `systemd`λŠ” 이 ν˜Όλž€μ„ 잠재우고 λͺ¨λ“  μ‹œμŠ€ν…œ μš”μ†Œλ₯Ό **ν‘œμ€€ν™”λœ 규격**으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ λ“±μž₯ν–ˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ„œ λ“±μž₯ν•˜λŠ” ν‘œμ€€ 규격이 λ°”λ‘œ **'μœ λ‹›(Unit)'** μž…λ‹ˆλ‹€. ## 3. μœ λ‹›(Unit): 데λͺ¬μ„ μ›€μ§μ΄λŠ” 'ν‘œμ€€ μž‘μ—… μ§€μ‹œμ„œ' {#sec-c8112a55b96d} 데λͺ¬μ΄ μ‹€μ œ 일을 μˆ˜ν–‰ν•˜λŠ” '싀체'라면, **μœ λ‹›μ€ κ·Έ 싀체λ₯Ό μ–΄λ–»κ²Œ λ‹€λ£°μ§€ 적어놓은 'μž‘μ—… μ§€μ‹œμ„œ'** μž…λ‹ˆλ‹€. `systemd`λΌλŠ” λ§ˆμŠ€ν„° 데λͺ¬μ€ μš°λ¦¬κ°€ μž‘μ„±ν•œ 이 μ§€μ‹œμ„œ(Unit)λ₯Ό 읽고, κ·Έ λ‚΄μš©μ— 따라 각 데λͺ¬μ„ κΉ¨μš°κ±°λ‚˜ μž μž¬μ›λ‹ˆλ‹€. * **μ˜λ„μ˜ λͺ…ν™•μ„±:** λ§Œμ•½ μœ λ‹›μ΄λΌλŠ” 규격이 μ—†λ‹€λ©΄, κ°œλ°œμžλ§ˆλ‹€ 데λͺ¬μ„ μ‹€ν–‰ν•˜λŠ” μ½”λ“œλ₯Ό 제각각 짰을 κ²ƒμž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ μœ λ‹›(예: `.service` 파일)μ΄λΌλŠ” ν‘œμ€€ μ§€μ‹œμ„œ 덕뢄에, μš°λ¦¬λŠ” **"μ–΄λ–€ ν™˜κ²½μ—μ„œ, μ–΄λ–€ μˆœμ„œλ‘œ, λ¬Έμ œκ°€ 생기면 μ–΄λ–»κ²Œ μž¬μ‹œμž‘ν• μ§€"** λ₯Ό 맀우 μ •κ΅ν•˜κ³  κ²¬κ³ ν•˜κ²Œ μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. * **μœ μ—°ν•œ ν™•μž₯μ„±:** μœ λ‹›μ€ 데λͺ¬(Service)λ§Œμ„ μœ„ν•œ 게 μ•„λ‹™λ‹ˆλ‹€. νŠΉμ • μ‹œκ°„μ— 일을 μ‹œν‚€λŠ” '타이머', μž₯치λ₯Ό μ—°κ²°ν•˜λŠ” '마운트' λ“± λ¦¬λˆ…μŠ€μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό λ™μΌν•œ 'μž‘μ—… μ§€μ‹œμ„œ' ν˜•μ‹μœΌλ‘œ μ²˜λ¦¬ν•©λ‹ˆλ‹€. 덕뢄에 μ‹œμŠ€ν…œ 전체λ₯Ό ν•˜λ‚˜μ˜ μΌκ΄€λœ λ…Όλ¦¬λ‘œ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ## 4. ν•œλˆˆμ— λ³΄λŠ” 관계도 {#sec-ea68ba1a28f7} | ꡬ뢄 | 데λͺ¬ (Daemon) | systemd μœ λ‹› (Unit) | | :--- | :--- | :--- | | **정체** | λ©”λͺ¨λ¦¬μ—μ„œ μ‹€μ œλ‘œ λŒμ•„κ°€λŠ” **ν”„λ‘œμ„ΈμŠ€** | μ‹œμŠ€ν…œ 섀정을 κΈ°λ‘ν•œ **λͺ…μ„Έμ„œ 파일** | | **μ—­ν• ** | λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€μ œ κΈ°λŠ₯ μˆ˜ν–‰ | 데λͺ¬μ˜ μ‹€ν–‰ 쑰건과 λ™μž‘ 방식 μ •μ˜ | | **λΉ„μœ ** | ν˜„μž₯μ—μ„œ 묡묡히 μΌν•˜λŠ” **일꾼** | 일꾼이 보고 λ”°λ₯΄λŠ” **μž‘μ—… μ§€μ‹œμ„œ** | > **μ •λ¦¬ν•˜μžλ©΄:** > `systemd`λΌλŠ” λ§ˆμŠ€ν„° 데λͺ¬μ€ **μœ λ‹›(μž‘μ—… μ§€μ‹œμ„œ)** 을 읽어 λ“€μ—¬, μˆ˜λ§Žμ€ **데λͺ¬(일꾼)** 듀이 μ •ν•΄μ§„ κ·œμΉ™λŒ€λ‘œ μ •ν™•ν•˜κ²Œ 움직이도둝 μ§€νœ˜ν•©λ‹ˆλ‹€. ## 5. 일꾼의 μ •μ²΄λŠ” λ‹€μ–‘ν•˜λ‹€: '데λͺ¬'κ³Ό 'μ„œλΉ„μŠ€ μœ λ‹›' μ œλŒ€λ‘œ κ΅¬λΆ„ν•˜κΈ° {#sec-40ea0fcb27a7} μš°λ¦¬κ°€ ν”νžˆ "μ„œλΉ„μŠ€λ₯Ό μ˜¬λ¦°λ‹€"κ³  말할 λ•Œ, μ‹€μ œλ‘œ λ°°κ²½μ—μ„œ λ›°κ³  μžˆλŠ” 일꾼(데λͺ¬)의 λͺ¨μŠ΅μ€ 단 ν•œ κ°€μ§€κ°€ μ•„λ‹™λ‹ˆλ‹€. μ–΄λ–€ μ–Έμ–΄λ‘œ λ§Œλ“€μ—ˆλ“ , μ–΄λ–€ ν˜•νƒœλ“  λ°±κ·ΈλΌμš΄λ“œμ—μ„œ λŒμ•„κ°€κΈ°λ§Œ ν•˜λ©΄ λͺ¨λ‘ 데λͺ¬μ΄ 될 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. **λ‹€μ–‘ν•œ 일꾼의 ν˜•νƒœ:** - 슀크립트 데λͺ¬: 직접 μž‘μ„±ν•œ Djangoλ‚˜ FastAPI 같은 파이썬 μ½”λ“œλ₯Ό μœ λ‹›μœΌλ‘œ λ“±λ‘ν•˜λ©΄, python3λΌλŠ” μ‹€ν–‰κΈ°λ₯Ό 톡해 λŒμ•„κ°€λŠ” 파이썬 데λͺ¬μ΄ λ©λ‹ˆλ‹€. - λ°”μ΄λ„ˆλ¦¬ 데λͺ¬: Cλ‚˜ Go μ–Έμ–΄λ‘œ 미리 컴파일된 Nginx, sshd 같은 것듀은 κ·Έ μžμ²΄κ°€ μ‹€ν–‰ 파일 ν˜•νƒœμΈ 데λͺ¬μž…λ‹ˆλ‹€. - μ‰˜ 슀크립트 데λͺ¬: 심지어 κ°„λ‹¨ν•œ .sh νŒŒμΌλ„ λ¬΄ν•œ 루프λ₯Ό 돌며 λ°°κ²½μ—μ„œ λ™μž‘ν•˜κ³  μžˆλ‹€λ©΄ ν›Œλ₯­ν•œ 일꾼(데λͺ¬)μž…λ‹ˆλ‹€. **μ„œλΉ„μŠ€ μœ λ‹›μ€ 'μ—°κ²° 고리'μž…λ‹ˆλ‹€:** μ—„λ°€νžˆ 말해 sshdλ‚˜ μ—¬λŸ¬λΆ„μ˜ 파이썬 슀크립트 κ·Έ μžμ²΄κ°€ κ³§ 'μ„œλΉ„μŠ€'인 것은 μ•„λ‹™λ‹ˆλ‹€. 그것듀은 단지 데λͺ¬(일꾼)일 λΏμž…λ‹ˆλ‹€. μš°λ¦¬κ°€ /etc/systemd/system/ 디렉토리에 직접 λ§Œλ“€κ±°λ‚˜, νŒ¨ν‚€μ§€κ°€ μ„€μΉ˜λ  λ•Œ μžλ™μœΌλ‘œ λ“±λ‘λ˜λŠ” .service 파일(μœ λ‹›)이 λ°”λ‘œ κ·Έ 일꾼을 μ‹œμŠ€ν…œμ˜ 정식 κ΅¬μ„±μ›μœΌλ‘œ λ“±λ‘ν•΄μ£ΌλŠ” μž‘μ—… μ§€μ‹œμ„œμž…λ‹ˆλ‹€. ## κ²°λ‘  {#sec-5483f8db76f6} 데λͺ¬μ€ "λ°°κ²½μ—μ„œ μΌν•˜λŠ” ν”„λ‘œκ·Έλž¨"μ΄λΌλŠ” μƒνƒœλ₯Ό λ§ν•˜κ³ , μ„œλΉ„μŠ€ μœ λ‹›μ€ κ·Έ 데λͺ¬μ„ systemdλΌλŠ” λ§ˆμŠ€ν„°κ°€ μ œμ–΄ν•  수 있게 κ·œκ²©ν™”ν•œ λͺ…μ„Έμ„œλ₯Ό λ§ν•©λ‹ˆλ‹€. 이 μ§€μ‹œμ„œκ°€ μžˆκΈ°μ— systemdλŠ” 일꾼의 정체가 νŒŒμ΄μ¬μΈμ§€, λ°”μ΄λ„ˆλ¦¬μΈμ§€ 상관없이 λ˜‘κ°™μ€ λ°©μ‹μœΌλ‘œ λͺ…령을 내릴 수 μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€. μ–΄λ–€κ°€μš”? μ €λŠ” [[λ¦¬λˆ…μŠ€]]λ₯Ό λ©”μΈμœΌλ‘œ μ‚¬μš©ν•œμ§€ 4~5λ…„ 정도 λ˜μ—ˆλŠ”λ°, 이 λ‘˜μ˜ κ°œλ…μ„ κΉ¨λ‹¬μ•˜λ‹€κ³  생각해도 μ •μž‘ λˆ„κ΅°κ°€μ—κ²Œ μ„€λͺ…ν•  λ•ŒλŠ” ꡉμž₯히 μ–΄λ €μ› μŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ μ €λŠ” μ•Œκ³  μžˆλ‹€κ³  생각해도 사싀 μ™„μ „νžˆ μ΄ν•΄ν•˜μ§€ λͺ»ν–ˆλ˜ 것이라고 μƒκ°ν•©λ‹ˆλ‹€. μ΄μ œμ„œμ•Ό λ“œλ””μ–΄ μ €λ§Œμ˜ μ–Έμ–΄λ‘œ μ •μ˜λ₯Ό 내리고 정리λ₯Ό ν•΄λ³΄λ‹ˆ 머릿속이 λͺ…ν™•ν•΄μ§„ κΈ°λΆ„μ΄λ“­λ‹ˆλ‹€. μ—­μ‹œ κΈ€μ“°κΈ°λŠ” μž¬λ―ΈμžˆμŠ΅λ‹ˆλ‹€. μ‹œκ°„μ€ 걸렀도 글을 쓰닀보면 머리속이 μ •λ¦¬λ˜λ‹ˆκΉŒμš”.