【发布时间】:2014-02-08 02:45:44
【问题描述】:
我安装了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 is running 每 5 秒写入一次/var/log/syslog。
但是当我想用kill -TERM *PID* 终止守护进程时,守护进程已终止,但系统日志中缺少文本 pythonDaemon STOP。
我做错了什么?
注意:我在这里没有使用from daemon import runner,因为这给了我一个错误(看起来我需要旧版本的lockfile),除非它是获得信号的唯一可能,否则我不会解决这个问题- 正确处理。
【问题讨论】:
标签: python linux python-2.7 signal-handling python-daemon