所以从本质上讲,我有一个作为systemd服务运行的python脚本。当我告诉它停止时,那里有一个比systemd timout更长的睡眠,systemd会在最后一段代码运行之前杀死它。之前的代码是while循环,循环每15秒重复一次。当systemd向它发送信号时,我怎样才能使脚本中断循环?
答案 0 :(得分:0)
使用signal.signal注册您的处理程序,如下所示:
#!/usr/bin/env python
import signal
import sys
isKilled = False
def signal_handler(signal, frame):
global isKilled
isKilled = True
signal.signal(signal.SIGINT, signal_handler)
signal.pause()
然后,您可以测试isKilled
以查看程序是否已发送了kill请求。
注意:您可能必须更改SIGINT
的值以匹配systemd正在发送的命令。这取决于您的使用案例。