Ubuntu 14.04の特定のIP andポートで実行されているプロセスをローカルIPおよびポートで強制終了する方法はありますか?できれば、これは1つのコマンドで実行できますが、そうでない場合は、bashスクリプトでもまったく問題ありません。
よりクリーンな方法がある可能性がありますが、次のようなものがあります。
netstat -lnp | grep 'tcp .*127.0.0.1:9984' | sed -e 's/.*LISTEN *//' -e 's#/.*##' | xargs kill
ss
を使用すると、src 127.0.0.1
とポート80
について、特定のIPとポートでリッスンしているプロセス/接続の詳細を取得できます。
Sudo ss -lp '( dport = :80 )' src 127.0.0.1
その場合、PID
を使用してgrep
を取得し、xargs
とkill
を使用してそれらをすべて強制終了することしかできません。
Sudo ss -lp '( dport = :80 )' src 127.0.0.1 | grep -Po "(?<=pid=).*(?=,)"\
| sort | uniq | xargs kill
-a
の代わりに-l
スイッチを使用して、すべてのリスニングソケットと非リスニングソケットのリストを取得することもできます。
Linuxのfuser
には、あなたが探していることを正確に実行するオプションがあります。
例えば、 fuser 80/tcp
は、そのポートにバインドされているプロセスのPIDを出力し、fuser -k 80/tcp
はそのプロセスを強制終了します。
Linuxでは、rootとして、次のいずれかを使用できます。
ss -ptan
または
netstat -ntulp
「リッスン」する実行中のすべてのプロセスのリストを取得します(この場合はtcp、udpの場合は「t」を「u」に置き換えます)。
したがって、ポート80でリッスンしているプロセスを強制終了する1つのライナーは、次のようになります。
ss -tanp | grep 80 | head -1 | sed 's_.*pid=\(.*\),.*_\1_' | xargs kill