2017-08-31 75 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正在發送的命令。這將取決於你的用例。