ポート8080を使用しているプロセスを強制終了して、放浪できるようにするにはどうすればよいですか?


97

MacOSXでは、Packerを使用してVagrantボックスを作成しているので、継続的に起動して破棄する必要があります。「vagrantup」しようとしていますが、ポートが使用されているため、標準エラーが表示されます。

「Vagrantは、このVMで指定されたポートを転送できません。これは、これらのポートを既にリッスンしている他のアプリケーションと衝突するためです。8080に転送されたポートは、ホストマシンですでに使用されています。」

解決策は十分に単純なようです。ポート8080を開いたままにしているプロセスを特定し、そのプロセスを強制終了する必要があります。それほど簡単ではありません。


コマンドを実行すると:

nmap localhost -p 8080

次の出力を受け取ります。

PORT     STATE SERVICE
8080/tcp open  http-proxy

次のコマンドを実行した場合:

top -o prt

1360年に使用された最高のポート


次のコマンドを実行した場合:

 netstat -tulpn | grep :8080

私は受け取ります:

netstat: n: unknown or uninstrumented protocol

次のコマンドを実行した場合:

lsof -i :8080

出力が届かない


コンピューターを再起動すると、ポートが使用可能になり、「vagrantup」できるようになります。

コンピュータを再起動せずに放浪できるように、ポート8080を使用しているプロセスを強制終了するにはどうすればよいですか?

回答:


171

これは役立つかもしれません

lsof -n -i4TCP:8080 

PIDは、出力の2番目のフィールドです。

または試してみてください:

lsof -i -P

試していただきありがとうございますが、質問の中でlsofコマンドからの出力がないことを述べました。
ジェイソンカラン2014年

別の可能性を追加しました。
Mark Setchell 2014年

HP LaserJetプリンターを持っていますか?blog.hgomez.net/blog/2010/09/25/…–
Mark Setchell

4
ありがとうマーク!何らかの理由で、コンピューターを再起動した後、lsofコマンドは何も出力していませんでしたが、現在は出力されています。これで、3つのlsofコマンドがすべて機能し、プロセスIDを識別して、次のコマンドで強制終了できます。sudokill -9 000 ...ここで、000はプロセスIDです。プロセスの名前は「VBoxHeadless」です。以前に機能しなかった理由についてさらに情報が得られた場合は、報告します。参考:プリンターは付属していません。
ジェイソンカラン2014年

sudo lsof -n -i4TCP:8080rootが所有するプロセスを取得してみてください。
mpelzsherman

98

迅速かつ迅速な解決策:

lsof -n -i4TCP:8080

PID2番目のフィールドです。次に、そのプロセスを強制終了します。

kill -9 PID

速度は遅いが永続的な解決策

  1. /usr/local/bin/ (ファインダーでcommand + shift + gを使用できます)に移動します

  2. stop。という名前のファイルを作成します。以下のコードを貼り付けます。

#!/bin/bash
touch temp.text
lsof -n -i4TCP:$1 | awk '{print $2}' > temp.text
pidToStop=`(sed '2q;d' temp.text)`
> temp.text
if [[ -n $pidToStop ]]
then
kill -9 $pidToStop
echo "Congrates!! $1 is stopped."
else
echo "Sorry nothing running on above port"
fi
rm temp.text
  1. このファイルを保存します。
  2. ファイルを実行可能にする chmod 755 stop
  3. 次に、ターミナルに移動して書き込みstop 8888(または任意のポート)します

4
永続的な解決策を試しましたが、スクリプトを実行しようとすると「アクセスが拒否されました」というメッセージが表示されました。最初に実行することで解決しましたchmod 755 stop
nomadoda 2018年

35

上記の回答が機能しなかった場合は、以下の解決策を試してください。ポート8080またはその他のポートに使用できます。

sudo lsof -i tcp:3000 

3000を必要なポートに置き換えます。以下のコマンドを実行して、そのプロセスを強制終了します。

sudo kill -9 PID

PIDは、強制終了するプロセスIDです。

以下は、Macターミナルでのコマンドの出力です。

コマンド出力


1
最初に通常のkill(-9ではない)を試します。-9オプションを選択すると、ソケットが正しく閉じられない可能性があります。プロセスは強制終了される可能性がありますが、代わりに別のリスナーが分岐します。
stackPusher

6

これをスクリプト化するには:

pid=$(lsof -ti tcp:8080)
if [[ $pid ]]; then
  kill -9 $pid
fi

-t引数は、それが唯一のPIDを返すことを意味lsofは「簡潔」の出力になります。


1
あなたはそれが$ポートを取り、あまりにも機能させること
mebada

最後に、PIDを直接取得するソリューション。おかげで男、このスレッドへの正しい答えでなければなりません
Olympiloutre

3

このコマンドを実行する必要がありました

sudo lsof -i :80 # checks port 8080

それから私は得た

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
acwebseca 312 root   36u  IPv4 0x34ae935da20560c1      0t0  TCP 192.168.1.3:50585->104.25.53.12:http (ESTABLISHED)

PIDを使用しているサービスを表示する

ps -ef 312

それから私はこれを手に入れました

  UID   PID  PPID   C STIME   TTY           TIME CMD
    0   312    58   0  9:32PM ??         0:02.70 /opt/cisco/anyconnect/bin/acwebsecagent -console

Cisco Webセキュリティエージェントをアンインストールするには、

sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh

クレジット:http//tobyaw.livejournal.com/315396.html


3
sudo lsof -i:8080

上記のコマンドを実行すると、実行中のすべてのジョブを確認できます。

kill -9 <PID Number>

PID(プロセス識別番号)を入力すると、インスタンスが終了/強制終了されます。


2

CiscoAnyConnectにすることができます。/Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plistが存在するかどうかを確認します。次に、launchctlを使用してアンロードし、/ Library / LaunchDaemonsから削除します。


1

アクティビティモニターを使用して、ポートを使用してプロセスを識別して終了することもできます。


1
どうすればいいですか?
エミールStenström

MacOSXの場合:アクティビティモニター>ネットワーク> PIDで並べ替え>ブロックされたポート(8080、5000など)を見つけます>左上の[X]をクリックします>プロセスを終了することを確認します。実行/ビルド構成を編集して、単一のサーバーインスタンスのみを作成できるようにすることをお勧めします。つまり、使用済みのポートはティアダウン時に解放されます。
アレックス・フリードマン

1

実行:(nmap -p 8080 localhostシステムにまだnmapがない場合は、MacPortsまたはHomebrewを使用してnmapをインストールします)

ローカルホストのNmapスキャンレポート(127.0.0.1)

ホストが稼働しています(待ち時間0.00034秒)。

ローカルホストの他のアドレス(スキャンされていません)::: 1

ポートステートサービス

8080 / tcp open http-proxy

実行: ps -ef | grep http-proxy

UID PID PPID C STIME TTY TIME CMD

640 99335 88310 0 12:26 pm ttys002 0:00.01 grep http-proxy "

実行:ps -ef 640(501をUIDに置き換えます)

/System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd

mac osxのポート8080は、XCodeSDKとともにインストールされたものによって使用されます


1

次のコマンドを使用します。

lsof -n -i4TCP:8080 | awk '{print$2}' | xargs kill -9

ポート8080のプロセスIDは、を使用して強制的に選択および強制終了されkill -9ます。


1

さまざまなポートでプロセスを強制終了する必要があったため、bashスクリプトを作成しました。

killPort() {
  PID=$(echo $(lsof -n -i4TCP:$1) | awk 'NR==1{print $11}')
  kill -9 $PID
}

それを.bashrcに追加して、次のように実行します。

killPort 8080

好きなポート番号を渡すことができます


0

netstatを試してください

netstat -vanp tcp | grep 3000

netstatが-pをサポートしていない場合は、lsofを使用してください

sudo lsof -i tcp:3000 

Centos7の使用

netstat -vanp --tcp | grep 3000
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.