検索してみましたが、pmapにはあまりないようで、ここに行きます。
トラブルシューティングのために開発者に送信できるデータを収集するためにWebLogicインスタンスで動作するスクリプトがあります。指定されたインスタンスPIDのpmapはデータ収集に含まれますが、インスタンスがスレッドブロック、大規模OCを検出した場合、または障害状態になったときにpmapが中断されます。
私たちが使用しているサーバーにはタイムアウトがインストールされていないため(インストールすることはできません)、pmapプロセスを45秒以下で実行して実行すると終了する条件を作成してみましたが、失敗しませんでした。影響を受けたインスタンスのフードの下にまだpmapがかかっているため、うまくいくようです。
コードは次のとおりです。
echo "Running pmap for a maximum of 45 seconds..."
pmap -x $1 > /tmp/pmapdump.txt &
pmapPID=$!
sleep 10
pmapRunning=$(pgrep -fl "${pmapPID}" |head -1 |awk '{print $1}')
if [ "${pmapRunning}" != "" ]; then
sleep 30
echo "The pmap appears to be stuck. This typically happens if the instance is in a failed state or has stuck threads."
echo "Killing the pmap and moving on with the rest of the script..."
kill -9 "${pmapPID}"
else
:
fi
これはメインスクリプトによって呼び出され、このスクリプトを生成することを決定する前にプロセスを終了して停止しないことを除いて正しく実行されているようです。
この問題で苦労し始めたら、どんな助けやアドバイスにも感謝します。