6

私はpython-daemonを使用していますがkill -9、プロセス時にpidfileが残り(ok)、次にプログラムを実行したときに、手動でpidfileを削除しない限り機能しないという問題があります(わかった)。

終了する前に呼び出されるすべての例外を順番にキャッチします。context.close()これが発生すると(たとえば、kill)/ var / run / mydaemon.pid *ファイルが削除され、後続のデーモンの実行が成功します。ただし、SIGKILL(kill -9)を使用する場合、を呼び出す機会がなくcontext.close()、/ var/runファイルが残ります。この場合、次にプログラムを実行すると、プログラムは正常に起動しません。元のプロセスは戻りますが、デーモン化されたプロセスはでブロックされcontext.open()ます。

python-daemonは、プロセスのpidfileが存在しないことに気づき、それをクリアする必要があるようですが、それは発生していません。私はこれを手作業で行うことになっていますか?

with注:このコードはPython 2.4で実行されるため、使用していません

from daemon import DaemonContext
from daemon.pidlockfile import PIDLockFile

context = DaemonContext(pidfile = PIDLockFile("/var/run/mydaemon.pid"))
context.open()

try:
    retry_main_loop()
except Exception, e:
    pass
context.close()
4

2 に答える 2

1

ここで提供されるスクリプトで は、あなたが言うように pid ファイルは kill -9 のままですが、スクリプトは再起動時にも適切にクリーンアップされます。

于 2012-02-24T13:02:54.007 に答える