Daemon ?

1 분 소요

도커 위에 젠킨스 컨테이너를 올리고 nginx 컨테이너를 올리고 무중단 자동 배포를 하다보니 갑자기 데몬이 뭘까? 궁금해졌다.

그래서 일단 구글을 통해 검색한 결과를 정리하려고 한다.

데몬은 무엇인가

멀티태스킹 운영 체제에서 데몬은 사용자가 직접적으로 제어하지 않고, 백그라운드에서 돌면서 여러 작업을 하는 프로그램을 말한다. 시스템 로그를 남기는 syslogd처럼 보통 데몬을 뜻하는 ‘d’를 이름 끝에 달고 있으며, 일반적으로 프로세스로 실행된다.

데몬은 대개 부모 프로세스를 갖지 않으며, 즉 PPID가 1이며, 따라서 프로세스 트리에서 init 바로 아래에 위치한다. 데몬이 되는 방법은 일반적으로 자식 프로세스를 포크(fork)하여 생성하고 자식을 분기한 자신을 죽이면서 init이 고아가 된 자식 프로세스를 자기 밑으로 데려가도록 하는 방식이다. 이러한 방법을 ‘fork off and die’라 부르기도 한다.

시스템은 시동할 때 데몬을 시작하는 경우가 많으며, 이런 데몬들은 네트워크 요청, 하드웨어 동작, 여타 프로그램에 반응하는 기능을 담당하게 된다. 그 밖에도 몇몇 리눅스에 있는 devfsd처럼 하드웨어 설정이나, cron처럼 주기적인 작업을 실행하는 등 기타 다양한 목적으로 사용된다.

기술적으로 엄밀히 말하자면, 유닉스에서 제어하는 터미널이 없고 부모 프로세스의 PID가 1인 프로세스를 데몬이라고 한다.

출처 : Wiki - 데몬(컴퓨팅)

  • 리눅스 시스템이 처음 가동될 때 실행되는 백그라운드 프로세스
  • 사용자 요청을 기다리고 있다가 요청이 발생하면 이에 적절히 대응하는 리스너 역할
  • 메모리에 상주하면서 특정 요청이 오면 즉시 대응 할 수 있도록 대기중인 프로세스
  • MS 윈도우의 Service와 유사하고 실제로 서비스라고 부르기도 한다.

standalone 방식, super daemon 방식

일반적으로 빈번히 사용하는 데몬은 standalone 방식, 자주 사용하지 않는 데몬은 super daemon 방식으로 실행한다. (httpd, mysqld, ftpd 등.. 자주 사용하는 데몬은 standalone 방식)

  • standalone /etc/init.d/

  • super daemon xinetd에 의해 다른 데몬을 실행 시킨다. xinetd 도 데몬이기 때문에 system init 순간에 standalone으로 켜진다.

/etc/xinetd.conf 또는 /etc/xinetd.d/ 에 등록되어 있는 친구들을 요청이 들어올 때 해당 데몬을 실행 시켜준다. 대표적인 서비스는 telnet, pop3, finger 서비스 이다.

/etc/xinetd.d 디렉토리의 파일을 보면 어떤 서비스들이 등록 되어있는지 볼 수 있다.

이 데몬의 구동 순서를 대충 알아보자.

클라이언트가 telnet으로 접속을 시도한다.

  1. 외부에서 telnet 서비스 요청이 들어옴
  2. inetd 데몬이 /etc/inetd.conf에 등록되어 있는 telnet 프로그램을 호출한다.
  3. xinetd는 tcp_wrapper에게 접근 허용여부를 검사시킨다.
  4. tcp_wrapper는 /etc/hosts.allow 파일과 /etc/hosts.deny 파일을 검사한다.
    1. 접속 가능시 /var/log/secure 파일에 접근 허용에 대한 기록을 남긴다
    2. 접속 불가능시 /var/log/secure 파일에 접근 불가 기록을 남기고 telnet 접속 거부한다.
  5. 접근 허용 되었으면, xinetd는 /etc/xinetd.d/telnet 파일의 내용을 읽어들이고 그러면 아마 telnet 데몬이 메모리로 올라간다.
  6. 클라이언트가 telnet 서비스를 사용한다.
  7. telnet 사용이 끝나면 telnet 데몬은 메모리에서 사라진다.

일반 프로세스와 차이

  • 일반 프로세스는 실행 상태에서 일련의 명령을 수행하고 명령이 끝나면 프로세스가 종료된다.
  • 데몬 프로세스는 명령이 끝나도 소멸되지 않고 메모리 상에 상주하면서 특정 조건이 되면 다시 명령을 수행하는 프로세스이다.

공부를 하면 할수록 공부할게 많아지는 것 같다…

공부를 조금 더 하고 포스팅 하도록 하자.

태그:

카테고리:

업데이트:

댓글남기기