Python 捕獲信號示例
通常用于循環執行的服務中。直接插入以下代碼
import signal
def shutdownFunction(signalnum, frame):
pass
for sig in [signal.SIGINT, signal.SIGHUP, signal.SIGTERM, signal.SIGKILL]:
signal.signal(sig, shutdownFunction)
具體的 signal 使用參見這篇文章。
對于*nix
系統,主要捕獲這下面的退出信號即可:
[
signal.SIGINT, # 鍵盤中 Ctrl-C 組合鍵信號
signal.SIGHUP, # nohup 守護進程發出的關閉信號
signal.SIGTERM, # 命令行數據 kill pid 時的信號
]
Linux 部分終止信號說明
- 信號 值 處理動作 發出信號的原因
SIGHUP 1 A 終端掛起或者控制進程終止
SIGINT 2 A 鍵盤中斷(如break鍵被按下)
SIGQUIT 3 C 鍵盤的退出鍵被按下
SIGILL 4 C 非法指令
SIGABRT 6 C 由abort(3)發出的退出指令
SIGFPE 8 C 浮點異常
SIGKILL 9 AEF Kill信號
SIGSEGV 11 C 無效的內存引用
SIGPIPE 13 A 管道破裂: 寫一個沒有讀端口的管道
SIGALRM 14 A 由alarm(2)發出的信號
SIGTERM 15 A 終止信號
SIGUSR1 30,10,16 A 用戶自定義信號1
SIGUSR2 31,12,17 A 用戶自定義信號2
SIGCHLD 20,17,18 B 子進程結束信號
SIGCONT 19,18,25 進程繼續(曾被停止的進程)
SIGSTOP 17,19,23 DEF 終止進程
SIGTSTP 18,20,24 D 控制終端(tty)上按下停止鍵
SIGTTIN 21,21,26 D 后臺進程企圖從控制終端讀
SIGTTOU 22,22,27 D 后臺進程企圖從控制終端寫