我安装了python-daemon
,现在我正在尝试正确处理信号。我的代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import signal, time, syslog
import daemon
def runDaemon():
context = daemon.DaemonContext()
context.signal_map = { signal.SIGTERM: programCleanup }
context.open()
with context:
doMainProgram()
def doMainProgram():
while True:
syslog.syslog("pythonDaemon is running")
time.sleep(5)
def programCleanup():
syslog.syslog("pythonDaemon STOP")
if __name__ == "__main__":
runDaemon()
当我启动代码时,一切都按预期工作:pythonDaemon 正在运行/var/log/syslog
的文本每 5 秒写入一次。但是,当我想终止守护程序时kill -TERM *PID*
,守护程序已终止,但系统日志中缺少文本pythonDaemon STOP。
我究竟做错了什么?
注意:我不在from daemon import runner
这里工作,因为这给了我一个错误(看起来我需要一个旧版本的lockfile
),除非它是正确处理信号的唯一可能性,否则我不会解决这个问题。