나는 파이썬에서 python-daemon 라이브러리를 사용하는 데몬을 구현했다.파이썬 데몬 프로세스가 죽어가는 이유를 찾는 방법은 무엇입니까?
그러나 데몬은 주기적으로 하루 동안 여러 달 동안 죽는 것처럼 보입니다 (또는 죽습니다).
나는 예외를 잡아 내고, 파일에 기록하고, 나에게 우편으로 보내기 때문에 죽어가는 데몬의 이유를 찾으려고 노력했다. 나는 나에 기록하고 우편으로 꽤 몇 가지 예외를 했어
import daemon
context = daemon.DaemonContext(
working_directory='/foo/',
pidfile=lockfile.FileLock('/foo/foo.pid')
)
try:
with context:
do_stuff()
except Exception, e:
log_exception_to_file(e)
mail_exeption_to_me(e)
, 그래서 코드는 일반적으로 작동 알고 내 스크립트의 데몬 부분은 대략 같다.
대다수의 경우, 아무 것도없고 감시 스크립트가 데몬이 더 이상 실행되지 않는다는 사실을 알려줍니다. 데몬이 죽거나 죽는 이유를 알아 내거나 추적 할 수있는 방법이 있습니까?
데몬이 paramiko를 사용합니까? 이전에 그런 문제가 있었기 때문에 해결 방법이 있습니다. –
일부 맞춤형 신호 처리기를 설정하고 신호를 파일로 기록 할 수 있습니다. 그것은 완전한 해결책이 아니지만 거기에 무슨 일이 일어나고 있는지 알려줄 수 있습니다. 다른 한편으로는 디버거 나 strace가 부착 된 상태에서 실행할 수 있습니다. – tmg
paramiko를 사용하지 않는 것이 두렵습니다. 디버거/strace를 통해 실행하는 방법에 대해 생각해 보았습니다. 문제는 죽기 전에 몇 달 동안 계속 실행되는 경우가 있기 때문에 죽기 직전에 어떤 일이 발생했는지 알 수있는 상당히 가벼운 방법이 필요합니다. –