서비스 (Service) & 데몬 (Daemon)

Seong Woong Kim·2023년 1월 10일
2

Linux / Ubuntu

목록 보기
11/14

💡 이 문서는 한빛미디어 - 이것이 우분투/리눅스다를 기반으로 공부하면서 체화를 위해 정리하는 글입니다. 💡



서비스

  • 부팅 때 자동으로 켜지고 계속 백그라운드에서 실행되는 프로세스

    • 메모리에 상주해 있다가 사용자 요청이 오면 응답하는 프로세스
  • 서비스는 눈에 보이지 않지만 현재 시스템에서 동작 중인 프로세스이므로 백그라운드 프로세스의 일종이라고 할 수 있다.

💡 서비스 != 백그라운드 프로세스 💡

  • 백그라운드 프로세스라는 점에서 서비스는 백그라운드 프로세스 범주 안에 들어가지만 둘이 같다고 할 순 없음.

  • 백그라운드 프로세스는 작업이 완료되면 사라지지만, 서비스는 계속 실행되는 백그라운드 프로세스라는 차이가 있음.




서비스 = 데몬

  • 데몬(daemon)과 서비스(service)" 둘 다 "부팅 때 자동으로 켜지고 계속 백그라운드에서 실행되는 프로세스"라는 의미

  • 유닉스/리눅스에선 데몬, 윈도우에선 "서비스"라고 했었지만, 요즘은 99% 같은 의미로 양측(유닉/리눅스와 윈도우)모두에서 사용


서비스

  • 서비스(Service)"란 단어는 "윈도우 운영체제"에서 주로 사용됐던 단어

  • "윈도우 OS와 함께 시작되어 계속 실행되는 백그라운드 프로세스"란 의미로 "데몬(Daemon)과 거의 비슷

  • "데몬"과 "서비스"란 것은 기능적으로 거의 같기에 혼용 가능


데몬

  • Linux는 OS가 부팅되면서 여러가지 데몬들이 실행됨.

  • 부팅과 함께 실행되는 데몬은 네트워크 요청을 처리하는 데몬, 하드웨어 동작을 처리하는 데몬 등, 시스템단에서 필요한 작업을 백그라운드로 처리하는 데몬들

  • 이러한 데몬들을 Linux에서는 service 파일로 설정하여 실행하고 있으며, systemd라는 프로세스가 관리

  • 일반적으로 데몬 프로세스는 systemd, syslogd, httpd, sshd, named 처럼 프로세스 이름 마지막에 d가 붙는다.

  • 같은 의미인 service를 붙이기도 함.

Systemd 경로 내 서비스 & 디렉터리들


✨ 서비스와 데몬의 1% 차이 ✨

  • 데몬과 서비스를 만드는 방법에서 차이가 생김

    • 윈도우는 서비스를 등록하기 위해선 sc.exe와 같은 프로그램으로 윈도우 API함수를 이용해 등록해야 함

    • 리눅스는 만든 스크립트에 'x' 실행권한을 준 상태로, 리눅스 시스템의 최초 프로세스인 init 프로세스(centos 6.9 이하는 init, 7 이상은 systemd)부팅 때 실행하는 스크립트 디렉토리에 넣어두면 바로 데몬이 됨

최초 프로세스인 systemd / 최상위 Parents




데몬(서비스) = 서버 프로세스

  • 서비스는 웹 서버, 네임 서버, DB 서버, FTP 서버 등의 프로세스도 지칭함.

  • 웹 서버 데몬, 네임 서버 데몬 등으로 부르기도 함.


서버프로그램들이 왜 데몬이라고 불리는가?

  • "데몬(Deamon)"은 "부팅 때 자동으로 켜져 백그라운드에서 계속 실행되는"라는 뜻이기 때문에, 꺼지지 않고 실시간으로 클라이언트와 통신을 계속 해야하는 "서버 프로세스"들이 주로 "데몬"이라고 불림.

    • 서버에서 "웹서버 프로그램"을 실행시키고 있어야 사람들(클라이언트)들이 브라우저를 통해 단순히 서버이름(네이버든, 구글이든, 롤 사이트든)을 쳐서 서버에 접속 가능
  • 이렇게 서버에 사용되는 항상 실행되어야 하는 프로그램들은 이런 특징 때문에 "데몬"이라고 불림.


💡 systemd (System Management Daemon) 💡

  • systemd라는 서비스 매니저 프로그램으로 서비스를 작동시키거나 관리
  • Ubuntu 15.04 이후부터 systemd의 모든 기능이 작동되며, systemd가 서비스 대부분을 관리
  • OS 부팅 시 OS에 필요한 여러 데몬들을 init해주는 역할

    • init은 RedHat 계열(RedHat Enterprise, CentOS)' 리눅스 6.9이하 버전에서 리눅스의 정상적인 부팅을 위해 초기화를 해주는 프로세스라는 역할을 하는 최초의 프로세스

    • systemd는 7이상 버전에서 기존 init 기능 + 시스템을 총 관리해주는 최초 프로세스

    • 'init, systemd' 둘 다 최초의 프로세스로서 핵심적으로 하는 역할 (모든 프로세스의 부모, 프로세스 관리, 부팅에 관여 등등)은 비슷

      • 이에 따라서 대부분의 리눅스 계열은 init 또는 systemd 중 하나만 사용
  • OS 부팅 시 운영체제 중 최초로 시작되는 프로세스

    • 1번 PID를 갖는 프로세스로, 프로세스 트리에서 가장 상위의 프로세스이며 모든 프로세스의 직간접 부모인 데몬

systemd




서비스 명령어


서비스의 실행 스크립트 파일 확인

ls -al /lib/systemd/system            # '서비스 이름.service'라는 이름으로 확인 가능


서비스 실행 관련

  • /lib/systemd/system 디렉터리에 있는 파일들은 대부분 systemctl start/stop/restart {서비스 이름} 명령으로 실행/중지/재시작
systemctl start/stop/restart {서비스 이름}
systemctl status {서비스 이름}
systemctl enable/disable {서비스 이름}




📚 REFRENCE 📚

  1. 이것이 우분투/리눅스다 - 한빛미디어
  2. https://junb51.tistory.com/9
  3. https://blogger.pe.kr/770
  4. https://mamu2830.blogspot.com/2020/04/blog-post_18.html
profile
성장과 연구하는 자세를 추구하는 AI 연구개발자

0개의 댓글