web-dev-qa-db-ja.com

特定のIPおよびポートで実行されているプロセスを強制終了するにはどうすればよいですか?

Ubuntu 14.04の特定のIP andポートで実行されているプロセスをローカルIPおよびポートで強制終了する方法はありますか?できれば、これは1つのコマンドで実行できますが、そうでない場合は、bashスクリプトでもまったく問題ありません。

1
Stephen

よりクリーンな方法がある可能性がありますが、次のようなものがあります。

netstat -lnp | grep 'tcp .*127.0.0.1:9984' | sed -e 's/.*LISTEN *//' -e 's#/.*##' | xargs kill
6
Stephen Rauch

ssを使用すると、src 127.0.0.1とポート80について、特定のIPとポートでリッスンしているプロセス/接続の詳細を取得できます。

Sudo ss -lp  '( dport = :80 )' src 127.0.0.1

その場合、PIDを使用してgrepを取得し、xargskillを使用してそれらをすべて強制終了することしかできません。

Sudo ss -lp  '( dport = :80 )' src 127.0.0.1 | grep -Po "(?<=pid=).*(?=,)"\
| sort | uniq | xargs kill

-aの代わりに-lスイッチを使用して、すべてのリスニングソケットと非リスニングソケットのリストを取得することもできます。

5
Ravexina

Linuxのfuserには、あなたが探していることを正確に実行するオプションがあります。

例えば、 fuser 80/tcpは、そのポートにバインドされているプロセスのPIDを出力し、fuser -k 80/tcpはそのプロセスを強制終了します。

3
fpmurphy

Linuxでは、rootとして、次のいずれかを使用できます。

ss -ptan 

または

netstat -ntulp

「リッスン」する実行中のすべてのプロセスのリストを取得します(この場合はtcp、udpの場合は「t」を「u」に置き換えます)。

したがって、ポート80でリッスンしているプロセスを強制終了する1つのライナーは、次のようになります。

ss -tanp | grep 80 | head -1 | sed 's_.*pid=\(.*\),.*_\1_' | xargs kill
1
man0v