임의의 일반 스크립트 또는 명령을 데몬 으로 바꿀 수있는 데몬 라이저를 원합니다 .
처리하고 싶은 두 가지 일반적인 경우가 있습니다.
영원히 실행되어야하는 스크립트가 있습니다. 죽는 경우 (또는 재부팅시) 다시 시작하십시오. 한 번에 두 개의 복사본이 실행되도록하지 마십시오 (복제가 이미 실행 중인지 감지하고이 경우 실행하지 마십시오).
영원히 반복적으로 실행하고 싶은 간단한 스크립트 또는 명령 줄 명령이 있습니다 (실행 사이에 잠시 멈춤). 다시 말하지만, 두 개의 스크립트 사본이 한 번에 실행되는 것을 허용하지 마십시오.
물론 사례 2의 경우 스크립트 주위에 "while (true)"루프를 작성한 다음 사례 1에 대한 솔루션을 적용하는 것은 간단하지만보다 일반적인 솔루션은 사례 1의 스크립트에 다음과 같이 적용되므로 사례 2를 직접 해결합니다. 잘 (스크립트가 정말 경우 스크립트가 이제까지 물론 (다이에 구성되지 않은 경우 그냥 짧은 또는 전혀 일시 정지를 할 수 있습니다 않고 다음 죽지 않을 일시 정지하지 않습니다 실제로 문제)).
솔루션은 기존 스크립트에 파일 잠금 코드 또는 PID 기록을 추가하는 것과 관련이 없어야합니다.
좀 더 구체적으로 말하자면, 다음과 같이 실행할 수있는 "daemonize"프로그램을 원합니다.
% daemonize myscript arg1 arg2
또는 예를 들어
% daemonize 'echo `date` >> /tmp/times.txt'
이는 times.txt에 추가 된 날짜 목록을 계속 유지합니다. (데몬화할 인수가 위의 경우 1과 같이 영원히 실행되는 스크립트 인 경우 데몬 이즈는 여전히 올바른 작업을 수행하고 필요할 때 다시 시작합니다.) 그런 다음 .login에 위와 같은 명령을 넣을 수 있습니다. 및 / 또는 시간 또는 분 단위로 cron (예기치 않게 죽어가는 것에 대해 얼마나 걱정했는지에 따라 다름).
주의 : daemonize 스크립트는 데몬 화중인 명령 문자열을 기억해야합니다. 그래야 동일한 명령 문자열이 다시 데몬 화되는 경우 두 번째 복사본이 시작되지 않습니다.
또한 솔루션은 OS X와 Linux 모두에서 이상적으로 작동해야하지만 둘 중 하나에 대한 솔루션도 환영합니다.
편집 : 당신이 그것을 호출 해야하는 경우 괜찮습니다 sudo daemonize myscript myargs
.
(내가이 모든 것을 잘못 생각하고 있거나 빠르고 더러운 부분적인 해결책이 있다면, 저도 듣고 싶습니다.)
추신 : 유용하다면 여기 에 파이썬과 관련된 비슷한 질문이 있습니다.
그리고 유사한 질문에 대한 이 답변에는 임의의 스크립트를 빠르고 더러운 데몬 화하는 데 유용한 관용구가 있습니다.