2009-06-24 17 views
31

perlで警告(終了コード137)を排除する方法はありますか?私は別のシェルスクリプトの中でlinux上でPerlスクリプトを実行しています。このPerlスクリプトは、警告と終了コード137で終了します。終了コード137の意味を特定できませんでした。私のPerlスクリプトが137で終了するのはなぜですか?

この警告を回避する最もよい方法は何ですか?私はスクリプトで "警告なし"を試みました。私はPerlスクリプトの最後にも出口0を持っています。

+1

スクリプトはどこで終了しますか?実際に警告が表示されますか? –

+2

関連するコードを投稿すると役立ちます。 – Telemachus

+0

私は、スクリプトの終了場所を特定する方法がわかりません。それは本当にうまくやっているようです(私の出力は正しいですが)137で終了します。エコー$ステータスを使って終了コードを表示します。 –

答えて

57

137 = 128 + 9これは、他のプロセスがシグナル9を送信したことを意味します。これはSIGKILLです。私。他のスクリプトがあなたを殺します、それはそれがどのように見えるかです。

+0

スクリプトを単独で実行しても、吐き出さないので、137です。ありがとう。 –

+11

シグナル自体を送信した可能性もあります。 –

+2

それはそれを殺しているoomkillerプロセスです - 他のスクリプトではありません。 – Christy

4

私は、perlプログラム自体ではなく、perlプログラムを呼び出したシェルによって終了警告が出力されると考えています。したがって、perlコードの「警告なし」は役に立ちません。終了コード137は、SIGKILL信号で殺されたことを意味します。

40

pythonスクリプトを起動するときに、同じ終了コード137を実行しました。 SOMKILLをPythonインタプリタに送り、OOMキラーが蹴り出すことが判明しました。 同じ原因の場合は、/ var/log/messagesにoom msgを見つけることができます。

+3

うわー、あなたの答えはおそらく何が起こっていたのか把握しようと時間を節約しました。 –

6

ANTスクリプトから同じエラーコード137が出ました。/var/log/messagesを見ると、メモリ不足であることが分かります。

Jun 21 07:33:30 myhost kernel: Out of memory: Kill process 52959 (java) score 164 or sacrifice child 
Jun 21 07:33:30 myhost kernel: Killed process 52959 (java) total-vm:709496kB, anon-rss:397016kB, file-rss:0kB