接続処理を監視するために、erlang vm とは別に epmd を起動しようとしています。
vm が epmd の前に起動する場合を除いて、これは正常に機能します。
epmdを単独で起動せずにerlang vmを起動させる方法はありますか?
役立つ質問/回答:
これらの質問/回答に沿って、erlang vm サービスを epmd に依存させることをお勧めします (これは別のサービスである必要があります)。また、最初に実行するサービスの 1 つとして epmd を実行すると、毎回 erlang の前に開始できるはずです。ただし、これを行う方法は、実際にはオペレーティング システムと展開の実装の詳細によって異なります。
また、それほどエレガントではない解決策は、initスクリプトを変更することです。これにより、epmdが開始するのを手動で待機します。あなたの走行距離は異なる場合があり、非常に単純なアプローチ (ただし、例としては有用) は次のようになります。
while [ true ]; do
pid=`pidof epmd`;
if [ "$pid" == "" ]; then
sleep 1; # Wait a bit more
else
break;
fi
done
# Continue initialization
コードは最大試行回数を考慮する必要があることに注意してください。また、pidofはLinuxでのみ機能するなどです。このソリューションが好きかどうかはわかりませんが、仕事はできます。
また、洗練されていない解決策として、erlang が実行する epmd を独自のバイナリに置き換えることができます。これは、必要なことは何でも実行します (上記のコードのように、epmd の開始を偽装するか、独自に実行するなど)。
それが役に立てば幸い!