etc./StackOverFlow

Mac에서 프로세스 잠금 포트 3000 찾기(및 종료)

청렴결백한 만능 재주꾼 2021. 11. 26. 06:55
반응형

질문자 :oma


내 tcp 포트를 수신/사용하는 프로세스를 어떻게 찾고 종료합니까? 저는 맥 OS X입니다.

때때로 충돌이나 버그가 발생한 후 내 레일 앱이 포트 3000을 잠그고 있습니다. ps -ef를 사용하여 찾을 수 없습니다...

할 때

 rails server

나는 얻다

이미 사용 중인 주소 - bind(2) (Errno::EADDRINUSE)

2014년 업데이트:

아래 답변 중 일부를 완료하려면 kill 명령을 실행한 후 pid 파일을 삭제해야 할 수 있습니다. rm ~/mypath/myrailsapp/tmp/pids/server.pid



  1. netstat 를 시도 할 수 있습니다

     netstat -vanp tcp | grep 3000
  2. macOS El Capitan 이상(또는 netstat가 -p 지원하지 않는 경우)의 경우 lsof

     lsof -i tcp:3000
  3. Centos 7의 경우:

     netstat -vanp --tcp | grep 3000

ghostdog74

찾다:

 sudo lsof -i :3000

죽임:

 kill -9 <PID>

Filip Spiridonov

빠르고 쉬운 솔루션 :

단일 포트를 죽이는 경우:

 kill -9 $(lsof -ti:3000)

여러 포트의 경우:

 kill -9 $(lsof -ti:3000,3001)

#3000은 해제할 포트입니다.

한 줄 명령으로 여러 포트 종료:

 kill -9 $(lsof -ti:3000,3001)

#여기서 여러 포트 3000 및 3001은 해제할 포트입니다.

lsof -ti:3000

82500(프로세스 ID)

lsof -ti:3001

82499

lsof -ti:3001,3000

82499 82500

죽이기 -9 $(lsof -ti:3001,3000)

단일 명령으로 82499 및 82500 프로세스를 모두 종료합니다.

package.json 스크립트에서 이것을 사용하려면:

 "scripts": { "start": "kill -9 $(lsof -ti:3000,3001) && npm start" }

Abhijith Sasikumar

위의 어떤 것도 나를 위해 일하지 않았습니다. 내 경험이 있는 다른 사람은 다음을 시도할 수 있습니다(저를 위해 일함).

운영:

 lsof -i :3000 (where 3000 is your current port in use)

보고된 PID의 상태를 확인하십시오.

 ps ax | grep <PID>

마지막으로 "그것과 함께 시작":

 kill -QUIT <PID>

Austin

포트 3000을 사용하여 프로세스의 PID를 추출하고 종료하는 단일 라이너입니다.

 lsof -ti:3000 | xargs kill

-t 플래그는 lsof 출력에서 PID를 제외한 모든 것을 제거하므로 쉽게 죽일 수 있습니다.


Zlemini

이 단일 명령줄은 기억하기 쉽습니다.

npx kill-port 3000

한 번에 여러 포트를 종료할 수도 있습니다.

npx kill-port 3000 3001 3002

보다 강력한 검색 도구:

npx fkill-cli


추신: 그들은 타사 자바 스크립트 패키지를 사용합니다. npx 는 Node.js에 내장되어 있습니다.

출처: 트윗 | 깃허브


Bruno Lemos

lsof -i:3000 사용할 수 있습니다.

그것은 "열린 파일 나열"입니다. 이것은 프로세스 목록과 그들이 사용하는 파일과 포트를 제공합니다.


DerMike

그런 프로세스를 강제 종료하려면 다음 명령을 사용하십시오.

 lsof -n -i4TCP:3000 OR lsof -i:3000

여기서 3000은 프로세스가 실행 중인 포트 번호입니다.

이것은 프로세스 ID(PID)를 반환하고 실행합니다.

 kill -9 "PID"

PID를 첫 번째 명령을 실행한 후 얻은 숫자로 바꿉니다.

예를 들어 포트 8080에서 실행 중인 프로세스를 종료하려면


Tadele Ayelegn

.bash_profile 에서 3000 프로세스 terminate 하기 위한 바로 가기를 만듭니다.

 terminate(){ lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9 }

그런 다음 차단된 경우 $terminate


alexzg

다중 포트를 죽이기 위해.

 $ npx kill-port 3000 8080 8081 Process on port 3000 killed Process on port 8080 killed Process on port 8081 killed

이 도움을 바랍니다!


Binh Ho

lsof -P | grep ':3000' | awk '{print $2}'

이렇게 하면 MacOS에서 테스트한 pid만 제공됩니다.


Kris

OS-X El Captain의 명령줄에서 실행:

 kill -kill `lsof -t -i tcp:3000`

lsof의 간결한 옵션은 PID만 반환합니다.


JE42

포트에서 프로세스를 종료하는 방법 중 하나는 python 라이브러리인 freeport( https://pypi.python.org/pypi/freeport/0.1.9 )를 사용하는 것입니다. 설치가 완료되면 다음을 수행합니다.

 # install freeport pip install freeport # Once freeport is installed, use it as follows $ freeport 3000 Port 3000 is free. Process 16130 killed successfully

YBathia

포트를 차단하는 프로세스를 보려면:

netstat -vanp tcp | grep 3000

포트를 차단하는 프로세스를 종료하려면:

kill $(lsof -t -i :3000)


Henry

열린 연결 찾기

lsof -i -P | grep -i "듣다"

프로세스 ID로 종료

kill -9 'PID'


Sourabh Bhagat

찾아 죽이기:

이 단일 명령줄은 쉽고 올바르게 작동합니다.

 kill -9 $(lsof -ti tcp:3000)

Dylan Breugne

이를 달성하는 가능한 방법:

맨 위

top 명령은 시스템의 리소스 사용량을 보고 가장 많은 시스템 리소스를 차지하는 프로세스를 확인하는 전통적인 방법입니다. 맨 위에는 가장 많은 CPU를 사용하는 프로세스가 맨 위에 있는 프로세스 목록이 표시됩니다.

추신

ps 명령은 실행 중인 프로세스를 나열합니다. 다음 명령은 시스템에서 실행 중인 모든 프로세스를 나열합니다.

 ps -A

다른 명령을 사용하지 않고 특정 프로세스를 검색하기 위해 grep을 통해 출력을 파이프할 수도 있습니다. 다음 명령은 Firefox 프로세스를 검색합니다.

 ps -A | grep firefox

프로그램에 신호를 전달하는 가장 일반적인 방법은 kill 명령을 사용하는 것입니다.

 kill PID_of_target_process

이소프

열려 있는 모든 파일과 파일을 연 프로세스의 목록입니다.

 lsof -i -P | grep -i "listen" kill -9 PID

또는

 lsof -i tcp:3000

smooth

lsof -i tcp:port_number - 해당 포트에서 실행 중인 프로세스를 나열합니다.

kill -9 PID - 프로세스를 종료합니다.

귀하의 경우에는

lsof -i tcp:3000 터미널에서 프로세스의 PID 찾기

kill -9 PID


Shan

이 두 명령은 서버 프로세스를 찾고 종료하는 데 도움이 됩니다.

  1. lsof -wni tcp:3000
  2. 죽이기 -9 PID

Saif chaudhry

나는 이것을 위해 작은 기능을 만들었습니다. rc 파일( .bashrc , .zshrc )에 추가하십시오.

 function kill-by-port { if [ "$1" != "" ] then kill -9 $(lsof -ni tcp:"$1" | awk 'FNR==2{print $2}') else echo "Missing argument! Usage: kill-by-port $PORT" fi }

kill-by-port 3000 을 입력하여 레일스 서버를 종료할 수 있습니다(실행 중인 포트에 대해 3000 대체)

실패하면 항상 rails 루트 디렉토리에서 kill -9 $(cat tmp/pids/server.pid) 를 입력할 수 있습니다.


Caleb Keene

~/.bash_profile 추가:

 function killTcpListen () { kill -QUIT $(sudo lsof -sTCP:LISTEN -i tcp:$1 -t) }

그런 다음 source ~/.bash_profile 및 실행

killTcpListen 8080


rofrol

sindresorhusfkill 도구를 사용하여 다음을 수행할 수 있습니다.

 $ fkill :3000

Kodie Grantham

kill -9 $(lsof -ti:3000)

항상 macOS에서 작동합니다.

node.js 프로젝트에서 작업하는 경우 다음과 같이 package.json 스크립트에 추가할 수 있습니다.

 "scripts": { ... "killme": "kill -9 $(lsof -ti:3000)", ... },

그 다음에

 npm run killme

--

또한 macOS에 대한 시스템 전체 별칭을 추가하려면 다음 단계를 따르세요.

  1. 홈 디렉토리로 이동합니다.

    CD ~

  2. nano 또는 vim을 사용하여 .bash_profile 또는 zsh 프로필을 엽니다.

    vi .bash_profile

  3. 별칭 추가(i 누름):

    별칭 killme="킬 -9 $(lsof -ti:3000)"

  4. 파일을 저장

  5. 터미널 다시 시작

터미널에 killme 입력

물론 포트 3000을 원하는 것으로 변경할 수 있습니다.


hakiko

노드 를 종료하는 데 적합합니다(Mac OS Catalina).

 killall -9 node

Abdul Saleem

TL;DR:

 lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill

포트를 사용하는 클라이언트와 서버가 모두 있는 상황에 있는 경우, 예:

 $ lsof -i tcp:3000 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 2043 benjiegillam 21u IPv4 0xb1b4330c68e5ad61 0t0 TCP localhost:3000->localhost:52557 (ESTABLISHED) node 2043 benjiegillam 22u IPv4 0xb1b4330c8d393021 0t0 TCP localhost:3000->localhost:52344 (ESTABLISHED) node 2043 benjiegillam 25u IPv4 0xb1b4330c8eaf16c1 0t0 TCP localhost:3000 (LISTEN) Google 99004 benjiegillam 125u IPv4 0xb1b4330c8bb05021 0t0 TCP localhost:52557->localhost:3000 (ESTABLISHED) Google 99004 benjiegillam 216u IPv4 0xb1b4330c8e5ea6c1 0t0 TCP localhost:52344->localhost:3000 (ESTABLISHED)

그렇다면 아마도 둘 다 죽이고 싶지 않을 것입니다.

이 상황에서 -sTCP:LISTEN 을 사용하여 수신 중인 프로세스의 pid만 표시할 수 있습니다. -t terse 형식과 결합하면 프로세스를 자동으로 종료할 수 있습니다.

 lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill

Benjie

이것을 시도해야 합니다. 이 기술은 OS 독립적입니다.

응용 프로그램 내부에는 tmp라는 폴더가 있고 그 안에는 pids라는 또 다른 폴더가 있습니다. 해당 파일에는 서버 pid 파일이 포함되어 있습니다. 해당 파일을 삭제하면 됩니다. 포트가 자동으로 죽습니다.

저는 이것이 쉬운 방법이라고 생각합니다.


Arun P

다음은 이름 또는 포트로 여러 프로세스를 종료하는 도우미 bash 기능입니다.

 fkill() { for i in $@;do export q=$i;if [[ $i == :* ]];then lsof -i$i|sed -n '1!p'; else ps aux|grep -i $i|grep -v grep;fi|awk '{print $2}'|\ xargs -I@ sh -c 'kill -9 @&&printf "X %s->%s\n" $q @';done }

용법:

 $ fkill [process name] [process port]

예시:

 $ fkill someapp :8080 node :3333 :9000

Miguel Mota

당신은 이것을 시도 할 수 있습니다

 netstat -vanp tcp | grep 3000

Foram

내가 가장 좋아하는 한 줄짜리: sudo kill `sudo lsof -t -i:3000`


LowFieldTheory

Mac에서 포트 3000을 종료하려면 아래 명령을 실행하십시오.

kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)


Sachin Kammar

출처 : http:www.stackoverflow.com/questions/3855127/find-and-kill-process-locking-port-3000-on-mac

반응형