2017-08-31 76 views
1

因此,本质上,我有一个python脚本作为systemd服务运行。当我告诉它停止时,那里的睡眠时间比系统时间更长,并且systemd在最后一段代码运行之前将其杀死。之前的代码是一个while循环,并且循环每15秒重复一次。我怎样才能让脚本在systemd发送信号时打破循环?如何使python守护进程处理systemd信号?

回答

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,看看该程序已经发出了终止请求。

注意:您可能必须更改SIGINT的值以匹配systemd正在发送的命令。这将取决于你的用例。