我的脚本在按下CTLC + C时通过except KeyboardInterrupt
退出,如下所示:
....
try:
thread1.start()
thread2.start()
while True:
time.sleep(1)
except (KeyboardInterrupt, SystemExit, Exception):
print("exiting")
# handle proper threads exit
但是,当脚本以systemd身份运行并且我调用systemctl stop myscript.service
时,'exiting'消息未记录到syslogger中,因此我知道except
未执行。似乎没有在服务停止时发布SystemExit
和Exception
。 systemctl发布了什么,所以我可以在我的脚本的try - except
部分中捕获它?
另外,在调用systemctl stop
时是否需要关注正确的线程退出,否则它会很好地处理我的脚本?