1

我遇到了 shell 脚本的问题,我有一个将在无限循环中运行的脚本,所以说它有 PID X。进程运行了 4-5 小时,但进程自动被杀死。这只发生在长时间运行的系统中我在 2 小时后观察到它也被杀死了。

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

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

下面是示例脚本

#!/bin/bash 

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

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

4

2 回答 2

3

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

另一种方法是通过“strace -p PID-X”跟踪你的脚本,注意它会减慢你的系统,特别是几个小时,但它可能是最后的手段。

以上希望对你有所帮助。

于 2013-04-05T14:28:40.787 回答
1

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

于 2013-06-02T07:45:07.560 回答