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