pid_maxが何回ラップされたかを確認するには?

pid_maxが何回ラップされたかを確認するには?

これを知ることは可能ですか?この情報を見つけるには一種のテストを実行する必要がありますか?

ログインした後、私のシステムはmax_pidをラップしているようで、まだ生きているシステムは以前のプロセスと同じpidを取得しました(これは私のスクリプトの1つがめちゃくちゃになりました...)!何が起こっているのか、解決策があるのか​​理解しようとしています。

私は/proc/sys/kernel/pid_max32768です

ベストアンサー1

pid_maxどのくらいの改行が発生したかを知る方法はありません。ラッパーの発生を防ぐpid_max1つの解決策は、pid_max内部に価値を追加することです。

cat /proc/sys/kernel/pid_max

上記のコマンドは、システムで使用できるプロセスの最大数を示します。次のようにmax_pid値を増やすことができます。

echo 4194303 > /proc/sys/kernel/pid_max

でも、

sysctl -w kernel.pid_max=4194303

ただし、一部のプロセスが現在メモリを使用しているかどうかを調べる必要があります。

実行ps -A中またはps -e現在システムメモリを使用しているプロセスを確認できます。

パッケージを識別できないのはなぜですか?

~からこれ答え、

ほとんどのシステムは、最後に生成されたPIDの数を保持し、1つを追加します(最も高い数字、たとえば65535またはより小さい数字でラップされます - 一般的に、ラップは65000または60000でも発生します)。現在使用中でないことを確認してください(PIDがまだ使用中の場合は重複しているため、PID 1(カーネル)はまだ存在し、「再発行」されません。

他のセキュリティ認識システムでは、ランダムに番号を生成して、まだ使用されていないことを確認します。

いつでもすべてのPID番号が一意であることを保証します。

pid_maxしたがって、到達しても現在使用されていない一部のPIDがまだ残っている可能性があるため、システムで引き続き使用できます。私が知っている限り、次のエラーが発生したときにのみpidが使い果たされたことがわかります。コメント説明する、

プロセス数が> pid_maxの場合、「プロセスがありません...」などのメッセージが表示されます。

おすすめ記事