데몬은 시스템이 부트스트랩될 때 종종 시작되고 시스템이 종료될 때만 종료되는 프로세스입니다. 제어 터미널이 없기 때문에 백그라운드에서 실행됩니다. UNIX 시스템에는 일상적인 활동을 수행하는 수많은 데몬이 있습니다. Daemons는 백그라운드에서 작동하며 (일반적으로 …) TTY에 속하지 않기 때문에 stdout / stderr를 원하는 방식으로 사용할 수 없습니다. 일반적으로 syslog 데몬(syslogd)은 파일(디버그, 오류,…)에 메시지를 로깅하는 데 사용됩니다. BSD UNIX의 개발자는 C 라이브러리 함수 데몬 () 버전 4.4에서 부터 사용할 수 있었다으로, 이것을 매우 알고 있었다. 이 함수는 표준이 아니지만 많은 UNIX에 있습니다. 안타깝게도 System-V 의미체계(예: Linux)를 따르는 시스템의 백그라운드에서 프로세스를 안정적으로 실행하는 데 필요한 모든 단계를 따르지는 않습니다. 자세한 내용은 해당 Linux man 페이지에서 확인할 수 있습니다.

여기서 가장 큰 문제는 좀비 프로세스가 나타날 때 상황을 피하기 위해 데몬 ()이 이중 포킹 기술을 사용하지 않는다는 것입니다. systemd를 사용 하 여 리눅스 배포를 사용 하는 경우, 다음 CentOS 리눅스 개발 서버에서 샘플 출력을 사용 하 여 데몬을 시작할 수 있습니다.: 많은 유닉스 같은 운영 체제에서, 리눅스를 포함 하 여, 각 데몬은 단일 스크립트 (즉, 짧은 프로그램) 될 수 있는 종료, 다시 시작 또는 상태를 확인합니다. 이러한 스크립트의 처리는 런레벨을 기반으로 합니다. 런레벨은 선택한 특정 프로세스만 존재할 수 있도록 하는 시스템의 구성 또는 작동 상태입니다. 다른 런레벨로 부팅하면 시스템 오류 복구를 비롯한 특정 문제를 해결하는 데 도움이 될 수 있습니다. 토론을 명확히 하기 위해 우리는 (리눅스의 데몬 (7) 수동 페이지에 따라 데몬 초기화 중에 수행해야하는 단계를 인용해야한다. 나는이 작업이 예상보다 더 까다롭다는 것을 보여주기 위해 그것을한다. 데몬(백그라운드 프로세스라고도 함)은 백그라운드에서 실행되는 Linux 또는 UNIX 프로그램입니다. 거의 모든 데몬에는 문자 “d”로 끝나는 이름이 있습니다. 예를 들어, 아파치 서버를 처리하는 데몬또는 SSH 원격 액세스 연결을 처리하는 sshd를 httpd.

리눅스는 종종 부팅 시간에 데몬을 시작합니다. /etc/init.d 디렉터리에 저장된 셸 스크립트는 데몬을 시작하고 중지하는 데 사용됩니다. 유닉스와 같은 시스템은 일반적으로 네트워크의 다른 컴퓨터의 서비스 요청을 수용할 뿐만 아니라 다른 프로그램 및 하드웨어 활동에 응답하기 위해 수많은 데몬을 실행합니다. 활동에 데몬을 트리거 할 수있는 작업 또는 조건의 예로는 특정 시간 또는 날짜, 지정된 시간 간격의 통과, 특정 디렉터리에 파일 방문, 전자 메일 수신 또는 특정 통신 회선을 통해 수행 된 웹 요청이 있습니다. 프로그램이 다몬을 암시적으로 일으킨다는 것을 알고 있기 때문에 프로그램이 종종 작업을 수행하지만 행동이나 조건의 가해자는 데몬이 듣고 있음을 인식할 필요는 없습니다. 이 저장소에는 Linux OS용 데몬의 간단한 예제가 포함되어 있습니다. 이 리포지토리에는 시작 스크립트의 예도 포함되어 있습니다. 운영 체제 및 응용 프로그램별로 시작되는 것 외에도 일부 데몬을 수동으로 시작할 수도 있습니다. 데몬을 시작하는 명령의 예로는 binlogd (지정된 파일에 바이너리 이벤트를 기록하는), mysqld (MySQL databse 서버) 및 아파치 (아파치 웹 서버)가 있습니다. Daemons는 모 프로세스가 항상 프로세스 를 나타내는 PID를 가진 모든 프로세스로 시스템에서 인식됩니다.

init은 Linux 컴퓨터를 부팅할 때 시작되는 첫 번째 프로세스(예: 시작됨)이며 컴퓨터가 꺼져 있을 때까지 시스템에 남아 있습니다. init은 자식 프로세스의 상태를 기다리지 않고 부모 프로세스가 종료되는 모든 프로세스를 채택합니다. 따라서 데몬을 시작하는 일반적인 방법은 한 두 번 포크 (즉, 분할)를 포함하고, 부모 (및 조부모) 프로세스가 자녀 (또는 손자) 프로세스가 정상적인 기능을 수행하기 시작하는 동안 죽게하는 것을 포함한다. 리눅스에서 나는 중지 할 수없는 파일 시스템 변경 사항을 모니터링 하는 데몬을 추가 할 수 있습니다.