【问题标题】:Shell script process is getting killed automaticallyShell脚本进程被自动杀死
【发布时间】:2013-03-26 01:36:39
【问题描述】:

我遇到了 shell 脚本问题运行系统的时间,我在 2 小时后观察到它也被杀死了。

我无法找到它崩溃的原因为什么它被杀死。除了我之外没有人在使用该系统。我正在以 root 用户身份运行该进程。

任何人都可以解释或怀疑杀死进程的原因。

下面是示例脚本

#!/bin/bash 

until ./test.tcl; do 
   echo "Server 'test.tcl' crashed with exit code $?. Respawing.." >&2 
done

在 test.tcl 脚本中,我正在运行它进行无限循环,该脚本用于捕获信号并进行一些特殊操作。但我们发现 test.tcl也在下降。 那么有什么方法可以让我捕捉到谁以及它是如何被杀的。

【问题讨论】:

  • 一种可能性是由于内存泄漏导致的内存消耗过多。
  • 如果不发布脚本,您将不太可能获得任何帮助。可能有任何问题,从内存泄漏、强制 CPU 时间限制,甚至是间歇性内存错误。
  • 没有内存问题
  • @JimGarrison 请检查修改后的问题。
  • 您是否将标准输出和标准错误捕获到文件中?进程被杀死时的输出是什么?

标签: linux shell process linux-kernel operating-system


【解决方案1】:

最好通过特定脚本检查操作系统当时生成和捕获的所有信号,这可能是导致进程终止的信号之一。

【讨论】:

    【解决方案2】:

    在您的系统中启用核心转储,这是应用崩溃分析最常用的方法。我知道 gdb 核心文件有点痛苦,但或多或​​少你可以从中找到一些东西。 这是给你的参考链接。(http://www.cyberciti.biz/tips/linux-core-dumps.html)。

    另一种方法是通过“strace -p PID-X”跟踪您的脚本,注意它会减慢您的系统速度,尤其是在您的情况下几个小时,但它可能是最后的手段。

    希望以上对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2017-01-23
      • 2016-07-08
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      • 2012-09-30
      • 2013-11-11
      • 1970-01-01
      相关资源
      最近更新 更多