일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- APPEND_SLASH = FALSE
- java di
- 14711 java
- 14711 타일 뒤집기
- 원격 연결 포트 포워딩
- 2961 도영이가 만든 맛있는 음식
- 2661 java
- 1188 java
- 2643 java
- 공유기 원격 설정
- django apache deploy error
- 18233 러버덕
- windows 원격 연결 설정
- windows apache wsgi 에러
- django 프로젝트 시작
- 2643 색종이 올려 놓기
- django 웹 페이지
- django The requested operation has failed!
- apache pythonpath
- 1188 음식 평론가
- django
- django settings.py
- 2661 좋은 수열
- django windows 배포 에러
- 18233 비트마스킹
- Problems occurred while performing provisioning operation
- 18233 java
- The requested operation has failed!
- django httpd error
- 2961 java
라이브러리는 도서관 아닌가요
프로세스와 데몬 그리고 systemd와 systemctl 등에 관한 생각 본문
우리는 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와 상호작용함 |
좀 더 구체적인 내용은 아래의 링크를 참조
그리고 Windows에서는 데몬을 서비스라고 통칭하므로,
주로 Linux 환경에서 사용되는 개념이라고 보면 된다.