什么杀了个人过程,为何?

个人应用程序在Linux上做为后台进程运行。 它目前在终端窗口的命令行中启动。 shell

最近一个用户正在执行该应用程序一段时间,它神秘地死了。 文本: bash

杀害 工具

在终端上。 这发生了两次。 我问是否有人在不一样的终端使用kill命令来杀死进程? 没有。 spa

在什么条件下Linux会决定杀死个人进程? 我相信shell显示“已杀死”,由于该进程在收到kill(9)信号后死亡。 若是Linux发送了kill信号,系统日志中是否会有消息说明它被杀的缘由? 命令行


#1楼

用于限制资源PAM模块彻底致使了您描述的结果:个人进程神秘地死于控制台窗口上的文本Killed 。 在syslogkern.log中都没有日志输出。 顶级程序帮助我发现,在一分钟的CPU使用后,个人进程被杀死了。 日志


#2楼

我最近遇到了这个问题。 最后,我发现个人进程在自动调用Opensuse zypper更新后被终止。 禁用zypper更新解决了个人问题。 code


#3楼

尝试: 进程

dmesg -T| grep -E -i -B100 'killed process'

-B100表示杀戮发生前的行数。 内存

在Mac OS上省略-T资源


#4楼

正如dwc和Adam Jaskiewicz所说,罪魁祸首多是OOM杀手。 可是,接下来的问题是:如何防止这种状况发生?

有几种方法:

  1. 若是能够的话,为您的系统提供更多内存(若是是VM,则很容易)
  2. 确保OOM杀手选择不一样的过程。
  3. 禁用OOM杀手
  4. 选择禁用OOM Killer附带的Linux发行版。

因为这篇文章 ,我发现(2)特别容易实现。


#5楼

像systemtap(或跟踪器)这样的工具能够监视内核信号传输逻辑和报告。 例如, https://sourceware.org/systemtap/examples/process/sigmon.stp

# stap .../sigmon.stp -x 31994 SIGKILL
   SPID     SNAME            RPID  RNAME            SIGNUM SIGNAME
   5609     bash             31994 find             9      SIGKILL

能够调整该脚本中的块if过滤,以消除系统范围内的信号流量。 经过收集回溯能够进一步隔离缘由(分别为内核和用户空间添加print_backtrace()和/或print_ubacktrace()到探针。

相关文章
相关标签/搜索