1

シェル スクリプトの問題に直面しています。無限ループで実行されるスクリプトがあるため、PID X があるとします。プロセスは 4 ~ 5 時間実行されますが、プロセスは自動的に強制終了されます。これは、長時間実行されているシステムでのみ発生します。そして、2時間後に何度か観察していますが、それも殺されています。

ダウンする理由、なぜ殺されるのかを見つけることができません。私以外の誰もシステムを使用していません。そして、ルートユーザーとしてプロセスを実行しています。

プロセスを強制終了している理由を説明または疑うことはできますか。

以下はサンプルスクリプトです

#!/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

特定のスクリプトによって、その時点で OS によって生成およびキャッチされたすべてのシグナルを確認することをお勧めします。

于 2013-06-02T07:45:07.560 に答える