毎日午前2時に開始するXYZバッチプロセスがあります。この XYZ はポート 59070 から開始するように構成されます。完了すると、このポートはオープンポートになります。しかし、最近問題が発生しました。他のプロセスは59070を使用しており、このXYZプロセスが開始されたときに実行に失敗しました。
回避策として、設定を別のポート59071に更新し、プロセスを正常に実行しました。私の質問は、このポート59070をブロックし、他のプロセスがこのポートを使用しないようにすることができるかどうかです。私たちはSolaris 10を使用しています。
ベストアンサー1
ポート 59070 はい一時ポート- 1つは次の目的に使用できます。国を離れるすべてのプロセスへのTCP接続。 (ポート59071も同様なので、これは実際には良い解決策ではありません...)
Solarisでは、一時ポート範囲は次のように設定されます。とtcp_smallest_anon_port
tcp_largest_anon_port
調整可能なパラメーター。デフォルトの範囲は32,768〜65,535です。この範囲のすべてのポートがビジーである可能性があります。いつでも発信TCP接続を介して。
@Jeff Schallerの答えによると、ポートは先着順に使用されるため、ポートを「予約」する唯一の方法は、常にポートに何かをバインドすることです。その答えで、「ポートセーバー」スクリプトを終了することと、実際にポートを使用している「一般」プロセスの間に他のプロセスが問題のポートを取得できることに注意してくださいbind()
。そうではない可能、もちろんですが、そのようなことが起こることもあります。処理が重要な場合は、これについて心配する必要があると思います。
一時ポートを使用しないか、プロセスが常に実行されるように設定しないことをお勧めします。inetadm
プロセスを自動的に実行するサービスを構成するために使用されます。。これにより、inetd
プロセスは常に「ユーザー」ポートにバインドされ、ユーザーが使用できるように効果的にスケジュールされます。