问题标签 [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 投票
3 回答
1800 浏览

ruby-on-rails - 进程收到 SIGTERM 时 ActiveRecord::StatementInvalid?

在我的 Rails 应用程序中,我有一个脚本可以更新数据库中的一些记录。当我发送 SIGTERM 来终止脚本时,它偶尔会在 ActiveRecord 执行查询时收到该信号。这会导致引发 ActiveRecord::StatementInvalid 异常。

我想捕获当它们是 SIGTERM 的结果时发生的 StatementInvalid 异常并退出脚本。如何判断 StatementInvalid 是由于信号而不是其他原因而发生的?

0 投票
7 回答
33760 浏览

bash - 我应该按什么顺序向正常关闭进程发送信号?

在对另一个问题这个答案的评论中,评论者说:

除非绝对必要,否则不要使用 kill -9 !SIGKILL 不能被捕获,因此被杀死的程序不能运行任何关闭例程来例如擦除临时文件。首先尝试 HUP (1),然后是 INT (2),然后是 QUIT (3)

我原则上同意SIGKILL,但其余的对我来说都是新闻。kill鉴于is发送的默认信号SIGTERM,我希望它是正常关闭任意进程的最常见的预期信号。此外,我还看到SIGHUP用于非终止原因,例如告诉守护进程“重新读取您的配置文件”。在我看来SIGINT(与 Ctrl-C 相同的中断,对吗?)并没有得到应有的广泛支持,或者终止得相当不优雅。

鉴于这SIGKILL是最后的手段——你应该将哪些信号以及以什么顺序发送到任意进程,以便尽可能优雅地关闭它?

如果可以的话,请用支持事实(超出个人偏好或意见)或参考来证实您的答案。

注意:我对包括考虑 bash/Cygwin 的最佳实践特别感兴趣。

编辑:到目前为止,似乎没有人提到 INT 或 QUIT,而且很少提到 HUP。是否有任何理由将这些包含在有序的进程终止中?

0 投票
3 回答
1601 浏览

c - How to free dynamic allocated variable by SIGTERM?

I work on code something like this

When process is forked, all variables are cloned too. In regular case all copies of var are freed.

If there is error by fork(), I send signal SIGTERM to all created processes. And I need to write signal handler for SIGTERM which free var and terminate application. However, free() is not signal safe function -- so I shouldn`t call it. But how to free() that variable?

A lot of thanks for your answers...

EDIT: valgrind also shows still reacheable variable:

0 投票
4 回答
20412 浏览

bash - 生成进程的 shell 脚本,在 SIGTERM 上终止子进程

我想编写一个 shell 脚本,在后台生成几个长时间运行的进程,然后挂起。收到 SIGTERM 后,我希望所有子进程也终止。

基本上,我想要一个“主进程”。

这是我到目前为止得到的:

上面的脚本失败了trap: 10: SIGTERM: bad trap

编辑:我正在使用 Ubuntu 9.04

0 投票
3 回答
19410 浏览

windows - 发送/捕获 SIGTERM 的 Win32 API 模拟

在 POSIX OS 下,有信号 API 允许向进程发送信号以使用 kill 将其关闭,您可以使用 sigaction 捕获它并执行您需要的操作;

但是,Win32 不是 POSIX 系统,所以:

  • 如何处理可能出现的关闭事件,例如来自“任务管理器”中的“结束进程”?
  • 向 Win32 应用程序发送关机信号的标准 API 是什么?

我不是在谈论 GUI,我在谈论应该很好地关闭的 TCP/IP 服务器。它不像 Windows 服务那样运行。

0 投票
7 回答
222462 浏览

linux - Apache 服务器不断崩溃,“捕获 SIGTERM,正在关闭”

这只是在三周左右前开始发生。我的网站内容没有改变,只是一个使用 MySQL 作为后端的 phpBB 论坛。

一年多来没有任何变化,但最近,每隔两天左右,服务器就会关闭并且根本无法访问,我必须通知我的服务提供商物理重启机器。

它似乎与我在日志中发现的这些 SIGTERM 错误有关。问题是我不知道如何解决这些问题或找到根本原因,因为我缺乏这方面的技能。

有人知道会发生什么吗?

Apache/2.2.3 (CentOS)

20051115

Linux 2.6.18-028stab057.4 #1 SMP 周五 8 月 1 日 10:47:59 MSD 2008 x86_64

从错误日志:[Sun Nov 01 15:18:53 2009] [notice] 捕获 SIGTERM,正在关闭

不完全确定是什么导致了我的问题,但这听起来不是一件好事。

如果需要,我可以发布更多日志信息

0 投票
2 回答
7109 浏览

c# - Windows 上是否有 posix SIGTERM 替代方案?- (控制台应用程序的温和杀戮)

我有一个由 GUI 应用程序运行的控制台守护程序。当 GUI 应用程序终止时,我也想停止守护程序。

我怎样才能在 Windows 上以温和的方式做到这一点?

在 Linux 上,我只会使用 SIGTERM 在 Windows 上是否有类似的机制用于控制台应用程序?

为了提供更多细节,守护程序应用程序是用 python 编写的,而 gui 是用 C# 和 windows 形式编写的。

0 投票
3 回答
705 浏览

python - 服务器重新启动后为守护进程挂起的 PID 文件

我有一些使用 PID 文件来防止我的程序并行执行的守护进程。我已经设置了一个信号处理程序来捕获 SIGTERM 并进行必要的清理,包括 PID 文件。当我使用“kill -s SIGTERM #PID”进行测试时,这非常有用。但是,当我重新启动服务器时,PID 文件仍然存在,阻止了守护程序的启动。据我了解,当服务器关闭时,SIGTERM 会发送到所有进程。我应该在我的守护进程中捕获另一个信号(SIGINT、SIGQUIT?)吗?

0 投票
2 回答
4086 浏览

python - 检测 Linux 下 Python/GTK 中的用户注销/关闭 - 未收到 SIGTERM/HUP

好的,这可能是一个困难的问题,我有一个 pyGTK 应用程序,由于我无法捕捉/控制的 X Window 错误而导致随机崩溃。

所以我创建了一个包装器,一旦检测到崩溃就重新启动应用程序,现在问题来了,当用户注销或关闭系统时,应用程序以状态 1 退出。但在某些 X 错误上它也会这样做。

所以我尝试了任何方法来捕捉关机/注销,但没有成功,这就是我尝试过的:

这些都没有成功,是否有任何低级方法来检测系统关闭?谷歌没有找到任何与此相关的东西。

我想一定有办法,对吗?:/

编辑: 好的,更多的东西。

我创建了这个 shell 脚本:

并且还创建了一个 .desktop 文件来运行它:

通常这应该在注销时创建术语文件,并在使用 & 启动时创建 hup 文件。但不在我的系统上。GDM 根本不关心脚本,当我重新登录时,它仍在运行。

我也尝试过使用shopt -s huponexit,但没有成功。

EDIT2:
这里还有一些关于真实代码的更多信息,整个事情看起来像这样:

流程是这样的:

现在在关闭时,start program返回 1。这意味着它确实 hanup 或父进程终止,主要问题是找出这两个中的哪一个刚刚发生。X 错误也会导致 1。困在 shellscript 中是行不通的。

如果您想查看实际代码,请查看 GitHub:http:
//github.com/BonsaiDen/Atarashii

0 投票
9 回答
22223 浏览

c - 如何在 Linux 上检测挂起的系统关闭?

我正在开发一个需要检测系统关闭的应用程序。但是,我还没有找到任何可靠的方法来获取有关此事件的通知。

我知道在关机时,我的应用程序会收到一个SIGTERM信号,然后是SIGKILL. 我想知道是否有任何方法可以查询 aSIGTERM是否是关机序列的一部分

有谁知道是否有办法以编程方式查询(C API)?

据我所知,系统没有提供任何其他方法来查询即将关闭的情况。如果是这样,那也可以解决我的问题。我也一直在尝试runlevels,但变化runlevels似乎是瞬间的,没有任何事先警告。