繁体   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