回答:
の-p
フラグはnetstat
、プロセスのPIDを示します。
netstat -l -p
編集: FreeBSDでソケットユーザーのPIDを取得するために必要なコマンドはsockstat
です。@Cycloneとのディスカッションで解決したように、この仕事をするのは次の行です。
sockstat -4 -l | grep :80 | awk '{print $3}' | head -1
netstat -nlp | grep :80
代わりに試してください
netstat: option requires an argument -- p
netstat
が呼び出されます。他の構文があります。
killコマンドに渡すことができる短いバージョン:
lsof -i:80 -t
lsof -i4TCP:80 -sTCP:LISTEN -t
代わりに、おそらくあなたが望むものです。
kill -9 `lsof -i:80 -t`
コピーを容易にするため
netstat -p -l | grep $PORT
とlsof -i :$PORT
ソリューションは良いですが、私はパイプと同様fuser $PORT/tcp
にPOSIX(で動作するcoreutils
)よりも拡張構文を好みます:
pid=`fuser $PORT/tcp`
ドロップできるように純粋なpidを出力します sed
マジック。
fuser
私の好きなツールの1つに、そのプロセスにシグナルを直接送信する機能があります(この構文はPOSIXの拡張でもあります)。
$ fuser -k $port/tcp # with SIGKILL
$ fuser -k -15 $port/tcp # with SIGTERM
$ fuser -k -TERM $port/tcp # with SIGTERM
また、-kはFreeBSDでサポートされています。http://www.freebsd.org/cgi/man.cgi?query = fuser
netstat -nlp
どのポートでリッスンしているかのPIDを教えてください。
netstat: 80: unknown or uninstrumented protocol
80
(nginx)ポートを使用して目的をテストしました。動作しませんでした。
プログラムで(Bashのみを使用して)、特定のポートでリッスンしているプロセスを強制終了したかった。
ポートが8089であるとしましょう。次に、これを実行した方法を示します。
badPid=$(netstat --listening --program --numeric --tcp | grep "::8089" | awk '{print $7}' | awk -F/ '{print $1}' | head -1)
kill -9 $badPid
これが他の誰かの役に立つことを願っています!それは私のチームを助けることになることを知っています。
function kill-listener { lsof -i:$1 -t | xargs kill -9 }
です。ポート8089の例を使用します。– kill-listener 8089
netstat: 80: unknown or uninstrumented protocol
80
(nginx)ポートを使用して目的をテストしました。動作しませんでした。