ポート80で実行されているプロセスを終了します。

ポート80で実行されているプロセスを終了します。

私が殺したいプロセスは次のとおりです。

sooorajjj@Treako ~/Desktop/MerkMod $ sudo netstat -tunap | grep :80
tcp6    0   0 :::80   :::*     LISTEN    20570/httpd

答え1

実行中のプロセスがポートを使用しているかどうかを見つける方法はいくつかあります。

fusionr を使用すると、受信ポートに関連付けられた複数のインスタンスの PID が提供されます。

sudo apt-get install psmisc
sudo fuser 80/tcp

80/tcp:               1858  1867  1868  1869  1871

見つかったら、プロセスを停止または終了できます。

lsofを使用してPIDと詳細を見つけることもできます。

sudo lsof -i tcp:80

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
nginx   1858     root    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1867 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1868 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1869 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1871 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  

リミットソケット聞くポート80(ポート80に接続されたクライアントの代わりに):

sudo lsof -i tcp:80 -s tcp:listen

自動的に殺す:

sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill

答え2

以下は、実行するコマンドを示す1行の内容です。

echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')

終了する実際のプロセスechoに置き換えます。sudo

答え3

開いているポートを一覧表示する3つのオプションがあります。ジェッシュ~のwhatisonport:

netstat -anp --numeric-ports | grep ":${PORT}\>.*:" 

fuser -v "${PORT}"/tcp

lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"

私はこれがnetstat速く、簡潔で、他のユーザーが開いたポートを一覧表示するので好む。 (そのプロセスの名前とPIDを一覧表示するには、まだスーパーユーザー/ユーザー権限が必要です。)

出力

$ netstat -anp --numeric-ports | grep ":80\>.*:" 
tcp6       0      0 :::80           :::*            LISTEN      1914/apache2    

$ fuser -v "80/tcp"
                     USER        PID ACCESS COMMAND
80/tcp:              root       1914 F.... apache2
                     www-data  12418 F.... apache2
...

$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2  1914     root    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
apache2 12418 www-data    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
...

どちらの場合も、grepローカル側のポートのみを一致させ、リモートポート80への接続を開くことをスキップします。 (代替案は-lwithnetstatまたはwithをlsof使用する-sTCP:LISTENことですが、上記のgrepもキャッチすることを好みます。出るつながる~から特定のポートが時々注意を引くことがあります。 )

代わりにディスプレイをlsof使用するとgrepが可能になります。このオプションはタイムリーに完了するよう強制します。-P:80:http-S 2lsof

プロセス終了

を使用すると仮定すると、netstat次のようにPIDを取得できます。

$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...

これらのPIDを次に渡すこともできますkill

... | xargs -d '\n' kill -KILL

ただし、正規表現を使用すると誤検出が発生する可能性があるため、初期出力を表示して実行するかどうかを手動で決定することをお勧めしますnetstat

$ kill -KILL 1914

また、見ることができます

listopenportsこれは面白いでしょう。

答え4

これを行う簡単な方法があります。まず、どのプロセスがポート80を使用しているかを確認してください。ネットワーク統計:

netstat -ntl | grep 80

次に、次のコマンドを使用してプロセス名を取得し、プロセスを終了します。それらすべてを殺す注文する:

killall -9 process name

関連情報