ポートの受信を停止するSolarisコマンド

ポートの受信を停止するSolarisコマンド

リッスンしているポートが正しく閉じられない場合は、クラッシュが発生するレガシーアプリケーション(制御不能)があります。システムを再起動せずに特定のポートでリッスンを停止するSolarisコマンドはありますか?

答え1

まあ。まだ開いているポートを見つけるには、ゾンビになったプロセスまたは使用できなくなったプロセスを見つける必要があります。プロセス名やPIDがわかっている場合はpfilespreapなどのコマンドを使用してくださいpkill

開いているポートを見つけるためにPIDまたはプロセス名を検索するスクリプトがあります。

#!/usr/bin/ksh -p

process=$1

# if $1 is all numbers, then assume it's a PID, and get the parent process.
if [[ $process = +([0-9]) ]]; then
        for pid in $( ptree $process | grep '^[0-9]' | awk '{print $1}' ); do
                pfiles $pid | egrep "^$pid:|sockname"
        done
else
# if $1 is/has letters, then assume it's a process name, and grep accordingly.
        for pid in $( ptree | grep $process | grep '^[0-9]' | awk '{print $1}' ); do
                pfiles $pid | egrep "^$pid:|sockname"
        done
fi

これにより、$1 に一致するプロセスに対して開かれた PID、プロセス名、ソケットが印刷されます。

ソケットを開いたままにして使用できないままにするPIDが何であるかを正確に知ったら、またはコマンドのいずれかをpkill使用preapして、そのPIDと開いているファイル記述子を強制的に閉じることができます。

答え2

ポートがまだリッスンしている場合、アプリケーションは何らかの方法で実行され続けます。コマンドの使用lsof-iどのプロセスがまだリッスンしているかを確認して終了します。

いない場合ラソフツールをインストールしたら、以下を検索する必要があります。ポリスチレン-EFまだ実行中のアプリケーションプロセスの場合。

関連情報