Linuxが私のプロセスを終了したかどうか、そしてその理由をどうやって知ることができますか?

Linuxが私のプロセスを終了したかどうか、そしてその理由をどうやって知ることができますか?

私はAmazonのLinuxディストリビューション(4.4.11-23.53.amzn1.x86_64)の1つで開発中です。 (1GB RAM)このインスタンスでは、
永久にモジュールを使用してnode.jsを実行しています。 (衝突が発生したときにNode.jsプロセスが再起動されることを保証します。)
私の経験では、
Webサーバーが約2〜3時間動作してからプロセスが消えます。 Webサーバーを実行する前には約70%程度のメモリを占有しており、その後は約80%程度のメモリを占有しています。
/ var / logのすべてのファイルを見ましたが、終了したプロセスに関連するものは何も見つかりませんでした。また、私のノードサーバーのすべての出力を記録しましたが、そこでも結果が得られませんでした。
私はメモリ不足のためにLinuxがプロセスを終了したと仮定していますが、再確認する方法がわかりません。そして、時間が経ってもWebアプリケーションのメモリ使用量が増加しないのに、なぜメモリ使用量が増加するのかわかりません。

ベストアンサー1

プロセスが終了した理由を見つけるには、親プロセスを印刷してください。終了ステータス。終了ステータスは、プログラムが信号のためにプロセスを終了したかどうかを示し、8ビット終了コードを含みます。 8桁の終了コードは通常、成功の場合は0、エラーの場合は1..125です。

C/Perl/…プログラムは完全な終了状態を照会できます。その言語ライブラリーのマニュアルを参照してください。シェルスクリプトでは、信号情報を含む終了ステータスが8ビット値に圧縮され、信号は128+値として報告されます。NどこN信号番号です。

#!/bin/sh
myprogram
ret=$?
if [ $ret -eq 0 ]; then
  echo "The program exited normally";;
elif [ $ret -gt 128 ]; then
  echo "The program died of signal $((ret-128)): $(kill -l $ret)"
else
  echo "The program failed with status $ret"
fi

システムのメモリ不足のためにLinuxがプログラムを終了すると、これはシステムログ、特にコマンドで表示される可能性があるカーネルログに書き込まれ、通常は次のファイルに書き込まれますdmesg/var/logどのファイルなのかわかりません)。 )Amazonディストリビューションはファイル名を使用します)。

いいえ考えるプロセスがメモリ不足で終了しました。何が起こっているかを確認してください。最も合理的な説明は、プログラムにバグがあり、クラッシュが発生したことです。

おすすめ記事