8080 numaralı bağlantı noktasını kullanan herhangi bir işlemi sersemletmek için nasıl öldürebilirim?


93

MacOSX'te, bir Vagrant kutusu oluşturmak için Packer kullanıyorum, bu yüzden onu sürekli yukarı kaldırıp parçalamam gerekiyor. Bağlantı noktası kullanımda olduğu için 'serserilik yapmaya' çalışıyorum ve standart hatayı alıyorum:

"Vagrant, bu bağlantı noktalarını dinleyen başka bir uygulama ile çakışacağından bu sanal makinede belirtilen bağlantı noktalarını iletemez. 8080'e iletilen bağlantı noktası, ana makinede zaten kullanılıyor."

Çözüm yeterince basit görünüyor: 8080 numaralı bağlantı noktasını açık tutan işlemi tanımlamam ve bu işlemi sonlandırmam gerekiyor, değil mi? O kadar kolay değil.


Komutu çalıştırırsam:

nmap localhost -p 8080

Aşağıdaki çıktıyı alıyorum:

PORT     STATE SERVICE
8080/tcp open  http-proxy

Aşağıdaki komutu çalıştırırsam:

top -o prt

1360'da kullanılan en yüksek bağlantı noktası


Aşağıdaki komutu çalıştırırsam:

 netstat -tulpn | grep :8080

Ben alıyorum:

netstat: n: unknown or uninstrumented protocol

Aşağıdaki komutu çalıştırırsam:

lsof -i :8080

Çıktı almadım


Bilgisayarımı yeniden başlatırsam, bağlantı noktası artık kullanılabilir ve artık 'serserilik yapabilirim'.

8080 numaralı bağlantı noktasını kullanan herhangi bir işlemi nasıl öldürebilirim ki bilgisayarımı yeniden başlatmadan serserilik yapabilirim?

Yanıtlar:


164

Bu yardımcı olabilir

lsof -n -i4TCP:8080 

PID, çıktıdaki ikinci alandır.

Veya Dene:

lsof -i -P

Denediğiniz için teşekkürler ama sorumda lsof komutundan hiçbir çıktı almadığımı belirttim.
Jason Curran

Başka bir olasılık ekledim.
Mark Setchell

Bir HP LaserJet yazıcınız var mı? blog.hgomez.net/blog/2010/09/25/…
Mark Setchell

3
Teşekkürler Mark! Her ne sebeple olursa olsun, bilgisayarımı yeniden başlattıktan sonra, lsof komutları hiçbir şey vermiyordu ve şimdi çıktılar. Şimdi, lsof komutlarının 3'ü de çalışıyor ve işlem kimliğini belirleyip şu şekilde öldürebilirim: sudo kill -9 000 ... 000 işlem kimliği nerede. İşlemin adı "VBoxHeadless" dir. Daha önce neden çalışmadığı konusunda daha fazla bilgi alırsam, geri bildireceğim. Bilginize: Bağlı yazıcım yok.
Jason Curran

sudo lsof -n -i4TCP:8080Kökün sahip olduğu işlemleri toplamaya çalışın .
mpelzsherman

90

Hızlı ve hızlı çözüm:

lsof -n -i4TCP:8080

PIDikinci alandır. Ardından, bu işlemi sonlandırın:

kill -9 PID

Daha az hızlı ama kalıcı çözüm

  1. Git /usr/local/bin/ (Bulucuda command + shift + g kullanılabilir)

  2. Adlı bir dosya oluşturun stop. Aşağıdaki kodu içine yapıştırın:

#!/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. Bu dosyayı kaydedin.
  2. Dosyayı çalıştırılabilir yapın chmod 755 stop
  3. Şimdi terminale gidin ve yazın stop 8888(veya herhangi bir bağlantı noktasına)

4
Kalıcı çözümü denedim ancak komut dosyasını çalıştırmaya çalışırken 'İzin reddedildi' aldım. İlk çalıştırma ile çözüldü chmod 755 stop.
nomadoda

32

Yukarıda kabul edilen cevap işe yaramazsa, aşağıdaki çözümü deneyin. 8080 numaralı bağlantı noktası veya diğer bağlantı noktaları için kullanabilirsiniz.

sudo lsof -i tcp:3000 

3000'i istediğiniz bağlantı noktasıyla değiştirin. Bu işlemi sonlandırmak için aşağıdaki komutu çalıştırın.

sudo kill -9 PID

PID, öldürmek istediğiniz işlem kimliğidir.

Mac Terminal'deki komutların çıktısı aşağıdadır.

Komut çıkışı


1
Önce normal öldürmeyi (-9 değil) denerdim. -9 seçeneği, yuvanın düzgün kapatılmamasına neden olabilir. İşlem sonlandırılabilir, ancak onun yerine başka bir dinleyici çatallanacaktır.
stackPusher

6

Bunu komut dosyası için:

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

-tArgümanı sadece PID döndüren araçları lsof "terse" çıktısını yapar.


1
$ port alan bir işlevi de yapabilirsiniz
mebada

Son olarak PID'yi doğrudan alan bir çözüm. Teşekkürler dostum, bu konuya doğru cevap olmalı
Olympiloutre

3

Bu komutu çalıştırmam gerekiyordu

sudo lsof -i :80 # checks port 8080

Sonra anladım

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)

hangi hizmetin PID'yi kullandığını göster

ps -ef 312

Sonra bunu anladım

  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 güvenlik aracısını kaldırmak için çalıştırın

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

krediler: http://tobyaw.livejournal.com/315396.html


2

Cisco AnyConnect olabilir. /Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist'in var olup olmadığını kontrol edin. Sonra launchctl ile boşaltın ve / Library / LaunchDaemons'tan silin.


2
sudo lsof -i:8080

Yukarıdaki komutu çalıştırarak tüm işlerin ne durumda olduğunu görebilirsiniz.

kill -9 <PID Number>

PID'yi (işlem kimlik numarası) girin, böylece bu, vakayı sonlandıracak / öldürecektir.


1

Bağlantı noktasını kullanarak işlemi tanımlamak ve işlemden çıkmak için Activity Monitor'ü de kullanabilirsiniz.


1
Bunu nasıl yaparım?
Emil Stenström

MacOSX'te: Etkinlik Monitörü> Ağ> PID'ye göre sırala> engellenen bağlantı noktasını bulun (ör. 8080, 5000 vb.)> Sol üstteki 'X'i tıklayın> işlemden çıkmak istediğinizi onaylayın. Yalnızca tek sunucu örneklerinin oluşturulabilmesini sağlamak için çalıştırma / derleme yapılandırmanızı düzenlemek iyi bir fikir olabilir, yani kullanılan bağlantı noktalarınız söküldüğünde serbest bırakılır.
Alex Friedmann

1

Çalıştır: nmap -p 8080 localhost(Henüz sisteminizde yoksa, nmap'i MacPorts veya Homebrew ile kurun)

Localhost için Nmap tarama raporu (127.0.0.1)

Ana bilgisayar açık (0.00034s gecikme).

Localhost için diğer adresler (taranmamış): :: 1

LİMAN DEVLET HİZMETİ

8080 / tcp açık http-proxy

Çalıştırmak: ps -ef | grep http-proxy

UID PID PPID C STIME TTY TIME CMD

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

Çalıştır: ps -ef 640(501'i UID'nizle değiştirin)

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

Mac osx üzerindeki 8080 numaralı bağlantı noktası , XCode SDK ile yüklenen bir şey tarafından kullanılıyor


1

Aşağıdaki komutu kullanın:

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

8080 numaralı bağlantı noktasının işlem kimliği seçilecek ve zorla öldürülecektir kill -9.


0

netstat'ı dene

netstat -vanp tcp | grep 3000

netstat'ınız -p'yi desteklemiyorsa, lsof kullanın

sudo lsof -i tcp:3000 

Centos 7 kullanımı için

netstat -vanp --tcp | grep 3000
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.