logo

리눅스 데몬

데몬이란 무엇입니까?

데몬은 사용자가 직접 액세스하는 대신 눈에 띄지 않게 백그라운드에서 실행되는 UNIX 계열 OS의 일종의 프로그램입니다. 특정 조건이나 이벤트가 나타날 때까지 기다립니다.

일반적으로 UNIX 계열 시스템은 주로 네트워크의 다른 시스템을 통한 서비스 요청, 하드웨어 활동 및 다른 프로그램에 대한 응답을 수용하기 위해 수많은 데몬을 실행합니다.

활동에 데몬을 활성화할 수 있는 조건이나 작업의 예로는 특정 날짜 또는 시간, 설명된 시간 간격의 경과, 특정 통신 회선에서 생성된 웹 요청 또는 이메일 수신, 특정 디렉터리에 있는 파일 등이 있습니다.

자바 인쇄

조건이나 조치의 가해자가 데몬이 듣고 있다는 사실을 반드시 알아야 하는 것은 아닙니다.

그러나 프로그램은 암시적으로 데몬을 불러일으킨다는 이유만으로 작업을 구현하는 경우가 많습니다.

데몬은 백그라운드 프로세스라고도 합니다. 백그라운드에서 실행되는 UNIX 또는 Linux 프로그램입니다. 거의 모든 데몬에는 문자 'd'로 끝나는 이름이 포함되어 있습니다. 예를 들어 sshd는 SSH 원격 액세스 연결을 관리하거나 Apache 서버를 관리하는 httpd 데몬을 관리합니다. 종종 Linux는 시작 시간에 데몬을 시작합니다.

다양한 쉘 스크립트는 /etc/init.d 디렉토리 내에 저장됩니다. 이 스크립트는 데몬을 시작하고 중지하는 데 사용됩니다.

리눅스 프로세스

일반적으로 데몬은 프로세스로 인스턴스화됩니다. 이러한 프로세스는 프로그램의 실행 중이거나 실행 중인 인스턴스입니다. 프로세스는 운영 체제의 핵심인 커널에 의해 처리되며 모든 특수 프로세스 식별 번호를 할당합니다.

Linux에는 주로 다음과 같은 세 가지 일반적인 종류의 프로세스가 있습니다.

  • 일괄
  • 인터렉티브
  • 악마

일괄 프로세스는 프로세스 대기열을 통해 제출되며 명령줄과 관련이 없습니다. 이러한 프로세스는 시스템 사용량이 낮은 경우 반복 작업을 수행하는 데 매우 적합합니다.

제나 아만 배우

대화형 프로세스는 사용자가 명령줄에서 대화형으로 실행합니다.

데몬은 상위 프로세스에 PID 1이 포함된 프로세스와 같은 시스템으로 식별됩니다.

항상 프로세스 초기화를 정의합니다. init 프로세스는 Linux 시스템이 시작될 때 시작되는 초기 프로세스이며 시스템이 종료될 때까지 시스템에 남아 있습니다.

init는 하위 프로세스의 상태를 기다리지 않고 상위 프로세스가 종료되거나 종료되는 모든 유형의 프로세스를 채택할 수 있습니다.

따라서 데몬을 시작하는 기본 기술은 두 번 또는 한 번 분할하거나 분기하고 하위 프로세스가 일반 기능 구현을 시작하는 동안 상위 프로세스가 종료되도록 하는 것입니다.

데몬의 역사

몇 가지 데몬은 System V의 init 스크립트에 의해 게시됩니다. 이는 시스템이 시작될 때 자동으로 실행될 수 있는 스크립트 또는 짧은 프로그램입니다. 일정 간격으로 재생산되거나 세션 기간 동안 유지될 수 있습니다.

이제 여러 데몬은 필요할 때만 시작되며 지속적으로 실행되는 대신 하나의 데몬(xinetd)에 의해 시작됩니다. xinetd는 TCP/IP 슈퍼 서버로 알려져 있습니다.

이는 시작 시 시작되며 구성 파일(예: /etc/xinetd.conf 또는 /etc/inetd.conf) 내에 나열된 프로세스에 할당된 다양한 포트를 수신합니다.

수동으로, 응용 프로그램 및 운영 체제에 의해 시작되기 위해 몇 가지 데몬이 포함되어 시작될 수도 있습니다. 모든 데몬에는 Linux를 포함한 여러 UNIX 유사 OS에 다시 시작하고 종료할 수 있는 개별 스크립트가 있습니다.

이러한 스크립트의 관리는 실행 수준에 따라 구현됩니다. 런레벨은 선택된 일부 프로세스만 사용 가능하도록 허용하는 시스템의 작동 또는 구성 상태로 정의될 수 있습니다. 고유한 런레벨로 시작하면 시스템 오류 수정을 포함하여 특정 문제를 해결하는 데 도움이 될 수 있습니다.

데몬의 핵심 포인트

데몬의 몇 가지 중요한 핵심 사항은 다음과 같습니다.

  • 데몬이라는 단어는 그리스어 방법론 데몬에서 따왔습니다. 이들은 인간과 신 사이에 위치하며 독특한 힘이나 지식을 소유한 초자연적 존재였습니다.
  • 1963년에 데몬이라는 용어는 IBM 7094의 도움으로 선구적인 프로젝트인 MAC의 시스템 컨텍스트 내에서 처음으로 적용되었습니다.
  • 이는 서로 다른 속도의 분자를 지원하고 백그라운드에서 지칠 줄 모르고 작동하는 추상 에이전트인 Maxwell의 열역학 및 물리학 데몬에서 영감을 받았습니다.
  • 이후 이 용어는 시스템 잡무를 끊임없이 구현하는 배경의 과정을 설명하는 데 사용되었습니다.
  • 최초의 데몬 컴퓨터는 테이프 백업을 자동으로 생성하는 프로그램이었습니다.
  • 이 용어는 컴퓨터 사용에 활용되었습니다. Disk and Execution MONitor의 약어였습니다.
  • Microsoft Windows 운영 체제에서 데몬 기능을 서비스라고 하는 다양한 프로그램이 있습니다. 그러나 데몬이라는 단어가 이러한 시스템에도 적용되는 경우가 있습니다.

데몬 구현

유닉스 같은 시스템

Unix 계열 시스템의 프로세스는 상위 프로세스가 종료되면 데몬이며 이 데몬은 init 프로세스(1번 프로세스)를 상위 프로세스로 지정하고 엄밀히 기술적인 방식으로 제어 터미널을 포함하지 않습니다.

그러나 데몬은 init 프로세스의 하위 프로세스인지 여부에 관계없이 백그라운드 프로세스일 수 있습니다.

아날로그 통신

프로시저의 기본 기술은 시스템 시작 스크립트 또는 init 스크립트와 같은 시작 스크립트나 명령줄을 통해 프로시저가 시작될 때 UNIX 유사 시스템에서 데몬이 됩니다.

  • 선택적으로 환경을 통해 불필요한 변수를 삭제합니다.
  • 종료 및 분기를 통해 백그라운드 작업으로 실행됩니다. 종료 알림을 수신하고 정상적인 실행을 계속하기 위해 데몬의 상위(시작 또는 셸 프로세스)를 허용합니다.
  • 호출 섹션을 통한 분리는 일반적으로 개별 작업인 setid()를 통해 수행됩니다.
    • tty 제어를 통해 분리합니다.
    • 새로운 세션을 만들고 해당 세션의 세션 리더가 됩니다.
    • 프로세스 그룹의 리더가 됩니다.
  • 데몬이 새로운 tty 제어를 상속하지 않는지 확인하려는 경우 종료하고 다시 분기할 수 있습니다. 이는 더 이상 새 세션 내의 세션 리더가 아니며 tty 제어를 상속받을 수 없음을 의미합니다.
  • 현재 작업 디렉터리를 루트 디렉터리로 설정하여 프로세스가 마운트된 파일 시스템에 있을 수 있는 디렉터리를 사용하지 않도록 합니다.
  • create(), open() 및 기타 운영 체제 호출을 허용하여 권한 마스크를 용이하게 하고 모든 호출자 umask에 의존하지 않도록 umask를 0으로 수정합니다.
  • 표준 스트림(stderr, stdout, stdin)에 대한 파일 설명자 0, 1, 2를 로그 파일 또는 /dev/null로 리디렉션하고 상위 프로세스를 통해 얻은 다른 모든 설명자 파일을 닫습니다.

프로세스가 systemd, launchd 또는 inetd와 같은 슈퍼 서버 데몬에 의해 시작되면 슈퍼 서버는 systemd에서 실행으로 변환되지 않고 다중 스레드 및 유형=포킹 데이터그램 서버로 설명되는 구식 데몬을 제외하고 이 프로세스에 대한 해당 기능을 구현합니다. inetd 시.

자바 유효한 식별자

MS-DOS

데몬과 같은 프로그램은 Microsoft DOS 플랫폼 내에서 종료 및 상주(줄여서 TSR) 소프트웨어로 실행되었습니다.

윈도우 NT

Windows 서비스라고 알려진 프로그램은 Microsoft Windows NT 시스템에서 이러한 데몬의 기능을 구현합니다. 프로세스로 실행되며 일반적으로 마우스, 키보드 및 모니터와 상호 작용하지 않습니다. 부팅 시 운영 체제의 도움으로 실행될 수 있습니다.

Windows 서비스는 제어판(전용 구성/제어 프로그램), PowerShell 스크립팅 시스템 또는 서비스 제어 관리자의 서비스 컨트롤러 요소인 net stop 및 net start 명령을 통해 수동으로 중지, 시작 및 구성됩니다.

그러나 모든 Windows 응용 프로그램은 서비스처럼 데몬의 책임을 구현할 수 있으며 일부 Windows 데몬에는 일반 프로세스로 실행하는 옵션이 포함되어 있습니다.

클래식 macOS 및 Mac OS

클래식 Mac OS에서 운영 체제를 재구축하는 부팅 시 로드된 파일을 통해 다양한 선택적 서비스 및 기능이 활성화되었습니다.

이를 제어판 및 시스템 확장이라고 합니다. 표준 Mac OS의 최신 버전에서는 완전한 얼굴 없는 배경 응용 프로그램으로 이러한 기능을 확장했습니다.

이러한 애플리케이션은 백그라운드에서 실행되는 일반 애플리케이션입니다. 이는 여전히 사용자에게 일반 시스템 확장으로 지정되었습니다.

macOS는 Unix 시스템이며 데몬을 사용합니다. macOS에서는 Windows가 데몬에 적용하는 것처럼 서비스라는 용어를 적용하는 대신 서비스 메뉴를 통해 선택한 기능을 구현하는 소프트웨어를 지정하기 위해 서비스라는 용어를 적용합니다.

일반적인 데몬 기능

  • cron과 같은 예약된 작업을 실행합니다.
  • RAID 어레이 또는 하드 디스크 상태와 같은 시스템을 모니터링합니다.
  • 네트워크 요청에 응답하고 네트워크 포트(예: 포트 80)를 엽니다.

쉘 프롬프트에 대한 데몬을 어떻게 시작, 재시작 또는 중지합니까?

아래와 같은 서비스 명령을 적용해야 합니다.

 service daemon-name-here start service daemon-name-here stop service daemon-name-here restart 

다음 예에서는 별표를 표시하고 다시 시작하고 중지합니다.

 service httpd start service httpd stop service httpd restart 

실행 중인 각 데몬의 목록을 어떻게 확인하나요?

설치된 모든 데몬의 상태를 확인하려면 다음을 입력합니다.

 service - -status-all 

데몬 계획하기

어떤 데몬을 할 것인가?

데몬은 한 가지를 구현해야 하며, 이를 잘 구현해야 합니다. 그 한 가지 일은 둘 이상의 도메인에 걸쳐 많은 사서함을 처리하는 것만큼 복잡할 수도 있고 관리자에게 메일을 보내고 보고서를 지정하기 위해 sendmail을 호출하는 것만큼 쉬울 수도 있습니다.

우리는 어떤 경우에든 데몬이 무엇을 해야 하는지 더 잘 알고 있어야 합니다. 이는 우리가 지정하거나 지정하지 않을 수 있는 몇 가지 다른 데몬과 상호 작용할 것입니다. 또한 조사해 볼 다른 것입니다.

자바 해시셋

상호 작용

데몬은 터미널을 통해 사용자와 직접 통신해서는 안 됩니다. 모든 통신은 GUI+GTK만큼 복잡할 수도 있고 개별 세트만큼 쉬울 수도 있는 몇 가지 인터페이스 정렬(지정할 수도 있고 지정하지 않아도 될 수도 있음)을 통해 전달됩니다.

데몬의 기본 구조

데몬은 시작 시 실제 작업을 준비하기 위해 몇 가지 낮은 수준의 집안일을 구현해야 합니다. 여기에는 다음과 같은 몇 가지 단계가 포함됩니다.

  • 슈퍼 프로세스(상위 프로세스)를 분기합니다.
  • 파일 모드의 마스크 수정(umask)
  • 로그를 열어 작성하세요.
  • 특수 세션 ID(줄여서 SID) 만들기
  • 작업 디렉터리(현재)를 안전한 위치로 수정하세요.
  • 파일의 클래스 설명자 닫기
  • 원래 데몬 코드를 입력하세요

Unix 및 Linux 유사 시스템용 데몬 서비스 목록

    시대착오적:시작 시 지연된 크론 작업을 실행합니다.AMD:Auto Mount Daemon의 약자입니다.등:도구에 적용하여 대기열에 있는 작업을 실행합니다.apmd:고급 전원 관리 데몬(Advanced Power Management Daemon)의 약자입니다.크론드:작업 스케줄러 데몬입니다.자동:이는 요청에 따라 장치의 마운트 해제 및 마운트를 허용하는 자동 마운트 데몬을 돕습니다.DHCPD:이는 동적 호스트 구성 프로토콜을 나타냅니다. 또한 인터넷 부트스트랩 프로토콜 서버입니다.컵:CUPS 프린터 데몬을 나타냅니다.FTP:FTP 서버 데몬의 약자입니다.httpd:웹서버 데몬입니다.게이트:egpup을 대체하는 데몬을 라우팅하고 둘 이상의 라우팅 프로토콜을 라우팅하고 관리할 수 있습니다.LP:Line Printer Daemon의 약자입니다.아이맵:imap 서버 데몬입니다.inetd:인터넷 슈퍼서버 데몬(Internet Superserver Daemon)의 약자입니다.memchached:인메모리 분산 객체 캐싱 데몬입니다.MySQL:데이터베이스 서버 데몬입니다.마운트:마운트 데몬입니다.nfsd:네트워크 파일 공유 데몬을 의미합니다.명명 된:DNS 서버 데몬입니다.무리:nfs 파일의 잠금 서비스를 시작하고 중지하는 데 적용됩니다.ntpd:Network Time Protocol 서비스 데몬을 나타냅니다.nmbd:Network Message Block Daemon의 약자입니다.포스트그레SQL:데이터베이스 서버 데몬입니다.접미사:메일 전송 에이전트이며 Sendmail을 대체하는 데 사용됩니다.rpc바인드:Remote Procedure Call Bind Daemon의 약자입니다.라우팅됨:라우팅 테이블을 처리합니다.smd:삼바데몬입니다.메일을 보내다:메일 전송 에이전트 데몬입니다.smtpd:Simple Mail Transfer Protocol Daemon의 약자입니다.오징어:웹페이지 캐싱 프록시 서버 데몬입니다.snmpd:Simple Network Management Protocol Daemon의 약자입니다.동기화:시스템 메모리와 함께 다양한 파일 시스템을 동기화된 상태로 유지할 수 있습니다.SSH:Secure Shell 서버 데몬입니다.시스템로그:시스템 로깅 데몬을 나타냅니다.텔넷:Telnet 서버 데몬입니다.TCPD:여기에는 호스트.거부 및 호스트.허용에서 inetd 기반 서비스에 대한 인증을 제한할 수 있는 서비스 래퍼가 있습니다.vsftpd:매우 안전한 FTP 데몬을 의미합니다.웹민:웹 기반의 관리 서버 데몬입니다.xntd:네트워크 시간 서버 데몬입니다.xinetd:향상된 인터넷 슈퍼서버 데몬입니다.