라이브러리는 도서관 아닌가요

프로세스와 데몬 그리고 systemd와 systemctl 등에 관한 생각 본문

Linux/TMI

프로세스와 데몬 그리고 systemd와 systemctl 등에 관한 생각

veryhi 2021. 10. 12. 07:47

우리는 Linux 환경에서 systemctl, journalctl 등의 명령어를 쉽게 접한다. (ctl은 control의 축약어이다.)

 

여기서 systemctl을 포함하는 systemd Utilities가 무엇인지 먼저 살펴보아야 하는데, (아래의 사진 참조)

 

우선 systemd는 system daemon의 약자이다.

 

이 녀석은 Unix 기반의 시스템이 부팅 후 가장 먼저 생성되고 난 후에,

 

'다른 프로세스를 실행하는 init 역할을 대체'하는 daemon이다.

 

 

 

이렇게 보니 괜히 어렵게 접근한 것 같은데, 서비스를 관리하는 하나의 어플리케이션이라고 접근하면 좋을 듯하다.

 

우리는 실제로 systemctl start [service_name] ...같은 명령어를 다룬 기억이 있다.

 

아래의 이미지를 살펴보면 systemd utilities의 안에 systemctl 등이 포함되어 있는 것을 알 수 있다.

source: https://en.wikipedia.org/wiki/Systemd#/media/File:Systemd_components.svg

 

 

 

여기서 '데몬'은 시스템 작업을 하는 백그라운드 프로세스이다.

 

일반적으로 시스템이 부팅되면서, 대부분의 데몬들이 시작된다.

 

서비스의 요청이 없으면 idle 상태에 진입하면서 메모리를 점유하게 된다.

 

그리고 당연히 '프로세스'는 SSD 또는 HDD에 저장된 프로그램이 '메모리'에 로딩되어 활성화된 것을 의미한다.

 

흔히들 돌아가는 놈이라고 표현하기도 한다.

 

 

 

다시 말해 데몬은 화면에 나타나지 않고 백그라운드에서 실행되는 프로세스를 의미한다.

 

따라서 '데몬모드로 돌고 있다', '데몬 모드에 있다', '현재 데몬으로 실행된다'... 따위의 표현들은 모두,

 

메모리에 로딩되어 상주하는 하나의 프로세스로 동작하고 있다 ...쯤으로 해석할 수 있겠다.

 

 

 

그렇다면, daemon과 background process가 같나?

 

라는 의문이 생긴다. 실제로 지금 내가 그렇다.

 

정답까지는 아닐지 몰라도, 둘은 엄밀히 말해 아래와 같은 차이가 있다.

Daemon Background Process
user와 상호작용 안 함 user와 상호작용함

좀 더 구체적인 내용은 아래의 링크를 참조

https://jins-dev.tistory.com/entry/Daemon-%EA%B3%BC-Background-Process-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

 

 

 

그리고 Windows에서는 데몬을 서비스라고 통칭하므로,

 

주로 Linux 환경에서 사용되는 개념이라고 보면 된다.

Comments