daemontools 또는 daemonize 와 같은 외부 도구를 사용하지 않고 시작할 때 데몬으로 실행하려는 쉘 스크립트 를 작성 중 입니다.
리눅스 데몬 작성 하우투
에 따르면 리눅스 데몬 쓰기 HOWTO 하는 적절한 데몬은 다음과 같은 특징이 있습니다 :
- 부모 프로세스의 포크
- 모두 닫는다 파일 설명자를 (즉,
stdin
,stdout
,stderr
) - 쓰기 위해 로그 를 엽니 다 (구성된 경우)
- 변경 작업 디렉토리 를 지속되는 디렉토리 로 (보통
/
) - 파일 모드 마스크를 재설정합니다 (umask)
- 고유 한 세션 ID를 만듭니다. (SID)를
데몬 라이즈 소개
데몬으로 소개 진술, 더 나아가 그 또한 일반적인 데몬 :
- 제어 터미널 에서 분리 (있는 경우) 모든 터미널 신호를 무시합니다.
- 그것에서 분리 프로세스 그룹
- 핸들
SIGCLD
어떻게이 모든이 작업을 수행 할 것 sh
, dash
또는bash
단지 일반적인 리눅스 도구와 스크립트?
데비안 이 우리의 주요 관심사 이지만 스크립트는 추가 소프트웨어없이 가능한 많은 배포판에서 실행될 수 있어야합니다 .
참고 : 제가 답변을 많이가 거기에 알고 StackExchange의 사용 추천 네트워크 nohup
나 setsid
,하지만 어느 이러한 방법 태클의 모든 위의 요구 사항을.
편집 : 데몬 (7) 맨 페이지는 이전의 스타일 사이에 약간의 차이가있을 것 같다 있지만 또한, 일부 포인터를 제공 SysV
데몬과 새로운 systemd
것들. 다양한 배포판과의 호환성이 중요하므로 답변에 차이점이 분명하게 표시되도록하십시오.
daemon
다른 것들은 다음과 같이 실행할 수있는 임의의 쉘 스크립트를 실행하기위한 것입니다. 데몬. 스크립트 작성 방법을 완전히 제어하는 저자이므로 시스템화 된 unitfile 또는 rc.d 스크립트에서 실행할 수 있도록 작성하십시오. 당신은 않았다 "적절한"지정!