问题标签 [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.
ruby-on-rails - 进程收到 SIGTERM 时 ActiveRecord::StatementInvalid?
在我的 Rails 应用程序中,我有一个脚本可以更新数据库中的一些记录。当我发送 SIGTERM 来终止脚本时,它偶尔会在 ActiveRecord 执行查询时收到该信号。这会导致引发 ActiveRecord::StatementInvalid 异常。
我想捕获当它们是 SIGTERM 的结果时发生的 StatementInvalid 异常并退出脚本。如何判断 StatementInvalid 是由于信号而不是其他原因而发生的?
bash - 我应该按什么顺序向正常关闭进程发送信号?
除非绝对必要,否则不要使用 kill -9 !SIGKILL 不能被捕获,因此被杀死的程序不能运行任何关闭例程来例如擦除临时文件。首先尝试 HUP (1),然后是 INT (2),然后是 QUIT (3)
我原则上同意SIGKILL
,但其余的对我来说都是新闻。kill
鉴于is发送的默认信号SIGTERM
,我希望它是正常关闭任意进程的最常见的预期信号。此外,我还看到SIGHUP
用于非终止原因,例如告诉守护进程“重新读取您的配置文件”。在我看来SIGINT
(与 Ctrl-C 相同的中断,对吗?)并没有得到应有的广泛支持,或者终止得相当不优雅。
鉴于这SIGKILL
是最后的手段——你应该将哪些信号以及以什么顺序发送到任意进程,以便尽可能优雅地关闭它?
如果可以的话,请用支持事实(超出个人偏好或意见)或参考来证实您的答案。
注意:我对包括考虑 bash/Cygwin 的最佳实践特别感兴趣。
编辑:到目前为止,似乎没有人提到 INT 或 QUIT,而且很少提到 HUP。是否有任何理由将这些包含在有序的进程终止中?
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:
bash - 生成进程的 shell 脚本,在 SIGTERM 上终止子进程
我想编写一个 shell 脚本,在后台生成几个长时间运行的进程,然后挂起。收到 SIGTERM 后,我希望所有子进程也终止。
基本上,我想要一个“主进程”。
这是我到目前为止得到的:
上面的脚本失败了trap: 10: SIGTERM: bad trap
。
编辑:我正在使用 Ubuntu 9.04
windows - 发送/捕获 SIGTERM 的 Win32 API 模拟
在 POSIX OS 下,有信号 API 允许向进程发送信号以使用 kill 将其关闭,您可以使用 sigaction 捕获它并执行您需要的操作;
但是,Win32 不是 POSIX 系统,所以:
- 如何处理可能出现的关闭事件,例如来自“任务管理器”中的“结束进程”?
- 向 Win32 应用程序发送关机信号的标准 API 是什么?
我不是在谈论 GUI,我在谈论应该很好地关闭的 TCP/IP 服务器。它不像 Windows 服务那样运行。
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,正在关闭
不完全确定是什么导致了我的问题,但这听起来不是一件好事。
如果需要,我可以发布更多日志信息
c# - Windows 上是否有 posix SIGTERM 替代方案?- (控制台应用程序的温和杀戮)
我有一个由 GUI 应用程序运行的控制台守护程序。当 GUI 应用程序终止时,我也想停止守护程序。
我怎样才能在 Windows 上以温和的方式做到这一点?
在 Linux 上,我只会使用 SIGTERM 在 Windows 上是否有类似的机制用于控制台应用程序?
为了提供更多细节,守护程序应用程序是用 python 编写的,而 gui 是用 C# 和 windows 形式编写的。
python - 服务器重新启动后为守护进程挂起的 PID 文件
我有一些使用 PID 文件来防止我的程序并行执行的守护进程。我已经设置了一个信号处理程序来捕获 SIGTERM 并进行必要的清理,包括 PID 文件。当我使用“kill -s SIGTERM #PID”进行测试时,这非常有用。但是,当我重新启动服务器时,PID 文件仍然存在,阻止了守护程序的启动。据我了解,当服务器关闭时,SIGTERM 会发送到所有进程。我应该在我的守护进程中捕获另一个信号(SIGINT、SIGQUIT?)吗?
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
c - 如何在 Linux 上检测挂起的系统关闭?
我正在开发一个需要检测系统关闭的应用程序。但是,我还没有找到任何可靠的方法来获取有关此事件的通知。
我知道在关机时,我的应用程序会收到一个SIGTERM
信号,然后是SIGKILL
. 我想知道是否有任何方法可以查询 aSIGTERM
是否是关机序列的一部分?
有谁知道是否有办法以编程方式查询(C API)?
据我所知,系统没有提供任何其他方法来查询即将关闭的情况。如果是这样,那也可以解决我的问题。我也一直在尝试runlevels
,但变化runlevels
似乎是瞬间的,没有任何事先警告。