방랑 할 수 있도록 포트 8080을 사용하는 프로세스를 어떻게 죽일 수 있습니까?


93

MacOSX에서는 Packer를 사용하여 Vagrant 상자를 만들고 있으므로 계속해서 꺼내서 분해해야합니다. '방랑자'를 시도하고 포트가 사용 중이기 때문에 표준 오류를 수신합니다.

"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

출력을받지 못함


컴퓨터를 다시 시작하면 포트를 사용할 수 있으며 이제 '방랑'할 수 있습니다.

컴퓨터를 다시 시작하지 않고 방랑 할 수 있도록 포트 8080을 사용하는 프로세스를 어떻게 종료 할 수 있습니까?

답변:


164

이것은 도움이 될 수 있습니다

lsof -n -i4TCP:8080 

PID는 출력의 두 번째 필드입니다.

또는 시도해보십시오.

lsof -i -P

시도해 주셔서 감사합니다.하지만 질문에서 lsof 명령에서 출력을받지 못한다고 말했습니다.
Jason Curran

또 다른 가능성을 추가했습니다.
Mark Setchell 2014-06-24

HP LaserJet 프린터가 있습니까? blog.hgomez.net/blog/2010/09/25/...
마크 Setchell

3
감사합니다 마크! 어떤 이유로 든 내 컴퓨터를 다시 시작한 후 lsof 명령은 아무것도 출력하지 않았고 이제는 그대로입니다. 이제 3 개의 lsof 명령이 모두 작동하고 있으며 프로세스 ID를 식별하고 다음으로 종료 할 수 있습니다. sudo kill -9000 ... 여기서 000은 프로세스 ID입니다. 프로세스 이름은 "VBoxHeadless"입니다. 이전에 작동하지 않은 이유에 대한 자세한 정보를 얻으면 다시보고하겠습니다. 참고 : 연결된 프린터가 없습니다.
Jason Curran

sudo lsof -n -i4TCP:8080루트가 소유 한 프로세스를 선택 하십시오 .
mpelzsherman

90

빠르고 빠른 솔루션 :

lsof -n -i4TCP:8080

PID두 번째 필드입니다. 그런 다음 해당 프로세스를 종료하십시오.

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
영구 솔루션을 시도했지만 스크립트를 실행하려고 할 때 'Permission denied'가 발생했습니다. 첫 번째 실행으로 해결됩니다 chmod 755 stop.
nomadoda

32

위의 답변이 작동하지 않는 경우 아래 해결책을 시도하십시오. 포트 8080 또는 다른 포트에 사용할 수 있습니다.

sudo lsof -i tcp:3000 

3000을 원하는 포트로 바꾸십시오. 해당 프로세스를 종료하려면 아래 명령을 실행하십시오.

sudo kill -9 PID

PID는 죽이려는 프로세스 ID입니다.

다음은 Mac 터미널의 명령 출력입니다.

명령 출력


1
나는 먼저 일반 킬 (-9가 아닌)을 시도 할 것이다. -9 옵션을 사용하면 소켓이 제대로 닫히지 않을 수 있습니다. 프로세스가 종료 될 수 있지만 다른 리스너가 대신 포크됩니다.
stackPusher

6

이를 스크립팅하려면 :

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

-t인수는 단지 PID를 반환 수단 lsof를 "간결"의 출력을합니다.


1
$ port를 사용하는 기능도 만들 수 있습니다.
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 Security Agent를 제거하려면 다음을 실행하십시오.

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

크레딧 : http://tobyaw.livejournal.com/315396.html


2

Cisco AnyConnect 일 수 있습니다. /Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist가 있는지 확인하십시오. 그런 다음 launchctl로 언로드하고 / Library / LaunchDaemons에서 삭제하십시오.


2
sudo lsof -i:8080

위의 명령을 실행하면 실행중인 모든 작업이 무엇인지 확인할 수 있습니다.

kill -9 <PID Number>

PID (프로세스 식별 번호)를 입력하면 인스턴스가 종료 / 종료됩니다.


1

활성 상태보기를 사용하여 포트를 사용하는 프로세스를 식별하고 종료 할 수도 있습니다.


1
어떻게할까요?
Emil Stenström 2011

MacOSX의 경우 : Activity Monitor> 네트워크> PID 별 정렬> 차단 된 포트 (예 : 8080, 5000 등) 찾기> 왼쪽 상단 'X'클릭> 프로세스 종료를 확인합니다. 단일 서버 인스턴스 만 만들 수 있도록 실행 / 빌드 구성을 편집하는 것이 좋습니다. 즉, 사용 된 포트가 분해시 해제됩니다.
Alex Friedmann

1

실행 : nmap -p 8080 localhost(아직 시스템에없는 경우 MacPorts 또는 Homebrew와 함께 nmap 설치)

localhost (127.0.0.1)에 대한 Nmap 스캔 보고서

호스트가 작동 중입니다 (지연 시간 0.0034 초).

localhost의 기타 주소 (스캔되지 않음) : :: 1

항만 서비스

8080 / tcp 오픈 http-proxy

운영: ps -ef | grep http-proxy

UID PID PPID C STIME TTY 시간 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은 XCode SDK와 함께 설치된 항목에서 사용됩니다.


1

다음 명령을 사용하십시오.

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

포트 8080의 프로세스 ID는를 사용하여 강제로 선택되고 종료됩니다 kill -9.


0

netstat 시도

netstat -vanp tcp | grep 3000

netstat가 -p를 지원하지 않으면 lsof를 사용하십시오.

sudo lsof -i tcp:3000 

Centos 7 사용

netstat -vanp --tcp | grep 3000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.