簡體   English   中英

如何知道 Linux 上的信號來自哪里?

[英]How to know where does a signal come from on Linux?

我正在運行 python 腳本,但它總是以某種方式停止。 所以我需要知道是誰阻止了這個過程。 在此處輸入圖像描述

是否有任何工具可以知道誰發送了停止進程的信號?

如果您能夠在主進程結束時等待,您可以添加如下內容:

import signal
siginfo = signal.sigwaitinfo({signal.SIGTERM})
print("got %d from %d by user %d\n" % (siginfo.si_signo,
                                         siginfo.si_pid,
                                         siginfo.si_uid))

(改編自此處:適用於 Linux 上的 Python 3.5.2)

這將阻止你的腳本並讓它等到它得到一個 SIGTERM,然后它會打印出發送 SIGTERM 的進程的 pid。 如果是 SIGINT 停止了您的程序,您可以將 SIGTERM 換成 SIGINT。 不幸的是,您只能在主進程中捕獲信號,而不能在單獨的線程中捕獲信號,請參閱此處了解更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM