问题标签 [sigterm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
918 浏览

linux - 如何在另一个 linux 终端中结束进程

背景资料:

  • 我正在尝试使用树莓派设置远程显示。
  • 目前我正在使用 fbi(帧缓冲区图像查看器)来显示图像。
  • 该设备将通过 ssh 或 Web 界面进行控制——不确定是哪个,但绝对不是来自实际设备。

问题是我似乎找不到一种简单的方法来“清理”远程退出进程,清除屏幕并不产生错误。如果按下 q 按钮,fbi 程序将退出,但这似乎对 ssh 没有好处。理想情况下,我更喜欢一个不那么混乱的解决方案,然后每次都必须在杀死它之前查找 pid。我对使用另一个程序的想法持开放态度,但是我无法在 Xorg 中运行它。

我试过了:

  • Grep-ing pid 并发送kill -sigterm,但它要么不退出,要么不清除屏幕
  • echo "q" > /proc/[pid]/fd/0 - 我尝试的所有迭代要么被拒绝访问,要么什么也没发生

有任何想法吗?

0 投票
1 回答
906 浏览

python - Python:覆盖默认的 SIGTERM 处理程序

我正在通过SIGTERM向我的服务器发送信号start-stop-daemon。正如预期的那样,服务器在收到信号时关闭。现在我想在收到后将服务器暂停 10 秒SIGTERM,然后将其关闭。为了实现这一点,我写了

现在服务器在收到信号后不会等待 10 秒。一旦发送信号,它就会关闭(在记录器中检查)。

以下消息在我的终端上也会暂停 10 秒。

我认为我的代码无法告诉 python 正在处理信号,因此默认处理程序也与我的处理程序一起被调用。知道需要做什么吗?

0 投票
0 回答
539 浏览

c++ - 在 Linux 下尝试忽略 SIGTERM 失败,进程仍然退出

我在Linux下遇到了一个信号处理问题,我的目标是让进程忽略SIGTERM信号。但有时,进程仍然退出,这个问题的概率是 1/60。

我的应用程序的假代码:

我想这个应用程序在收到信号 SIGTERM 时不会退出,但实际测试结果与我的设计不符。有时,进程在收到信号 SIGTERM 后仍然退出。当问题发生时,我确认进程收到 SIGTERM 信号,我可以观察控制台输出和跟踪文件。

所以我就纳闷了,为什么这个应用忽略SIGTERM也会退出呢?我不确定如何定位这个问题的原因,或者它是 Linux 下的合理症状。

希望能得到您的帮助。谢谢!

0 投票
1 回答
368 浏览

linux - 收到 SIGTERM 后,进程应该多快退出?

是否有关于 linux 进程在收到 SIGTERM 信号后最多需要多长时间才能退出的指南?

编辑:我问是因为我必须决定阻塞 I/O 调用的超时时间。

0 投票
0 回答
1433 浏览

hadoop - hadoop 数据节点随着 SIGTERM 15 不断关闭

我正在运行一个有 24 台服务器的 hadoop 集群。它已经运行了几个月,但在最后一次重新启动后,数据节点不断因错误而死:

每次我重新启动集群时,它都会很好地启动,所有节点都打开。但是在运行 map reduce 作业几秒钟后,一些节点会因该错误而死。每次死节点都不一样。

你知道发生了什么吗?我正在使用 Hadoop 2.4.1,正如我所说,集群之前已经运行了几个月,没有出现任何问题。

谢谢。

0 投票
1 回答
1504 浏览

php - CLI 中的 PHP SIGTERM

我正在从 CLI 运行 php 脚本,并且我想在脚本用 ctrl + c 停止时执行一个函数。我试过这个:

但它不起作用。我怎样才能做到这一点?

0 投票
1 回答
1726 浏览

python - systemd - 孩子在父母退出时收到 SIGTERM

环境:

我有一个 python 服务器,它分成 3 个孩子。

对于家长:

  • SIGTERM 应该杀死所有孩子,而 SIGHUP 应该记录并存在

对于孩子:

  • SIGTERM 和 SIGHUP 都映射到 SIG_DFL

问题:

当我通过命令行启动脚本python <script.py>并将 SIGHUP 发送给父级kill -1 <pid-of-parent>时,它表现良好。只有在完成 I/O 后,父进程才会退出,而忙碌的子进程才会退出。

但是,如果使用 systemd 脚本启动相同的脚本,当我向父级发送 SIGHUP 时,仍然忙碌的子级会收到一个 SIGTERM 并导致 I/O 中断。

对此有任何解释/解决方案吗?是不是配置错误?

0 投票
3 回答
498 浏览

c - 使用 zookeeper C 客户端的进程在 SIGTERM 上断开连接

我们在我们的应用程序中使用 Apache Zookeeper Client C 绑定。客户端库版本为 3.5.1。当 Zookeeper 连接断开时,应用程序配置为退出,错误代码为 116。

Systemd 被用于自动启动/停止应用程序。单元文件不会覆盖默认设置KillMode,即发送 SIGTERM 到应用程序

当使用 systemctl stop 指令停止进程时,Zookeeper 客户端线程似乎正在尝试重新连接到 Zookeeper:

因此,该过程正在退出并出现错误代码。Systemd 在退出时看到失败代码并且不会尝试重新启动应用程序。有谁知道为什么客户端断开连接?

我知道我可以通过SuccessExitStatus=116在单元文件中进行设置来解决这个问题,但我不想掩盖真正的错误。我尝试为 SIGTERM 注册信号处理程序并在处理程序中关闭 Zookeeper 客户端。但是当我发出 systemctl stop 时,处理程序代码似乎永远不会受到影响。

编辑:处理程序没有被调用,因为我让它异步 - 它没有在收到信号后立即执行。OTOH 该过程在 Zookeeper 断开连接后立即退出。

0 投票
1 回答
606 浏览

java - 将“sigterm”从 Java 发送到 Bash 脚本

我正在从名为start.sh. Bash 脚本启动 Java 代码,然后 Java 代码运行。在 Java 程序结束时,我想向 Bash 脚本发送一个信号以终止。请记住,Bash 脚本以 PID = 1 运行。我必须终止 PID 1 进程。

我设置了 bash 脚本,使其在无限循环中运行并waits用于终止信号:

我正在使用 Docker 实例,信号是sigterm. 我正在关注本教程:https : //www.ctl.io/developers/blog/post/gracefully-stopping-docker-containers/ 它解释了如何从命令行发送 sigterm。我想自动化这个过程,并在 Java 程序结束后立即从内部关闭/杀死 docker 实例。

如何将信号发送回最初启动 Java 代码的 bash 脚本?

我应该按照 这种方法将信号作为参数发送到 bash 脚本吗?或者它会启动另一个具有不同 PID(不是 1)的 bash 脚本。

需要帮助!

0 投票
0 回答
484 浏览

python - 在 Jenkins 中优雅地停止爬虫

我使用 Jenkins 来安排我用 Python scrapy 框架编写的爬虫。抓取完成后,我使用“封闭”蜘蛛方法来准备结果。

问题是,如果我决定在 Jenkins 中使用“停止”按钮更早地停止我的蜘蛛,它会发送 SIGTERM 两次,这会迫使我的蜘蛛不干净地关闭。

如何强制 Jenkins 只发送一次 SIGTERM,或者如何在 Scrapy 中处理 SIGTERM 信号以忽略第二个 SIGTERM 信号并允许蜘蛛正常关闭?