【发布时间】:2019-11-07 15:16:12
【问题描述】:
我有一个长期运行的 Python 脚本,它在 Visual Studio Code 中运行。
一段时间后脚本停止运行,仅此语句没有错误:
“fish: “/usr/bin/python3 /home/ubuntu/....” 被信号 SIGTERM 终止(礼貌退出请求)”
这里发生了什么?
【问题讨论】:
标签: python-3.x visual-studio-code
我有一个长期运行的 Python 脚本,它在 Visual Studio Code 中运行。
一段时间后脚本停止运行,仅此语句没有错误:
“fish: “/usr/bin/python3 /home/ubuntu/....” 被信号 SIGTERM 终止(礼貌退出请求)”
这里发生了什么?
【问题讨论】:
标签: python-3.x visual-studio-code
如果某个进程收到 SIGTERM,则其他进程会发送该信号。这就是你的情况。
SIGTERM 信号被发送到进程以请求其终止。与 SIGKILL 信号不同,它可以被进程捕获、解释或忽略。这允许进程执行良好的终止释放资源并在适当的情况下保存状态。 SIGINT 几乎与 SIGTERM 相同。
SIGTERM 不是系统自动发送的。有一些信号会在终端消失时自动发送,例如 SIGHUP,当进程执行不应执行的操作时会自动发送 SIGSEGV/SIGBUS/SIGILL,当进程写入损坏的管道/套接字时会自动发送 SIGPIPE,等等。
SIGTERM 是通常用于以管理方式终止进程的信号。
这不是内核会发送的信号,而是进程通常会发送的信号以终止(优雅地)另一个进程。默认由kill、pkill、killall、fuser -k 命令发送。
您的进程收到此类信号的可能原因是:
但这些是一些可能性。在您的情况下,问题的根源可能与不同的东西有关。您可以通过告诉进程忽略信号来避免 SIGTERM 信号,但不建议这样做。
请参阅此link 了解更多信息。
查看this类似问题以获取更多信息。
【讨论】: