ポートの受信を停止する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と開いているファイル記述子を強制的に閉じることができます。

おすすめ記事