Mac에서 프로세스 잠금 포트 3000 찾기(및 제거)
TCP 포트를 수신/사용하는 프로세스를 어떻게 찾습니까?저는 macOS 중입니다.
때때로 충돌이나 버그가 발생한 후 Rails 앱이 포트 3000을 잠그는 경우가 있습니다.를 사용하여 찾을 수 없습니다.ps -ef
...
실행 시
rails server
알겠습니다
Address already in use - bind(2) (Errno::EADDRINUSE)
Node.js 프로세스를 중지할 때도 동일한 문제가 발생합니다.프로세스가 중지되고 앱 실행이 중지된 후에도 포트3000
잠겼습니다.앱을 다시 시작할 때, 다음과 같은 정보를
Address already in use (Errno::EADDRINUSE)
시도해 보세요
netstat
netstat -vanp tcp | grep 3000
macOS El Capitan 이상(또는 netstat가 지원하지 않는 경우)
-p
), 사용lsof
lsof -i tcp:3000
찾기:
sudo lsof -i :3000
킬:
kill -9 <PID>
참고: -9
프로세스를 즉시 중지하고 프로세스 자체를 정리할 기회를 주지 않습니다.문제가 발생할 수 있습니다.사을고려다니합을 사용하는 것을 .-15
(TERM) 또는-3
(QUIT) 프로세스가 자동으로 정리될 수 있도록 보다 부드러운 종료를 제공합니다.
빠르고 쉬운 솔루션:
kill -9 $(lsof -ti:3000)
여러 포트의 경우:
kill -9 $(lsof -ti:3000,3001)
#3000은 해방될 포트입니다.
한 줄 명령으로 여러 포트를 죽입니다.
kill -9 $(lsof -ti:3000,3001)
#여기서 다중 포트 3000 및 3001은 해제할 포트입니다.
ls of -ti:3000
포트가 사용 중인 경우 위의 명령은 다음과 같은 것을 반환합니다. 82500(프로세스 ID)
ls of -ti:3001
82499
ls of -ti:3001,3000
82499 82500
킬 -9달러 (ls of -ti:3001,000)
단일 명령으로 82499 및 82500 프로세스를 모두 종료합니다.
에서 사용하기 .package.json
스크립트:
"scripts": {
"start": "kill -9 $(lsof -ti:3000,3001) && npm start"
}
터미널에서 다음을 사용할 수 있습니다.
npm run start
위의 어떤 것도 저에게 효과가 없었습니다.제 경험이 있는 다른 사람은 다음을 시도할 수 있습니다(저를 위해 일했습니다).
실행:
lsof -i :3000 (where 3000 is your current port in use)
그런 다음 보고된 PID의 상태를 확인합니다.
ps ax | grep <PID>
마지막으로, "그것으로 마무리":
kill -QUIT <PID>
이 단일 명령줄은 쉽게 기억할 수 있습니다.
npx kill-port 3000
여러 포트를 동시에 종료할 수도 있습니다.
npx kill-port 3000 3001 3002
검색 기능이 있는 보다 강력한 도구:
npx fkill-cli
PS: 그들은 타사 자바스크립트 패키지를 사용합니다. npx
Node.js와 함께 제공됩니다.
포트 3000을 사용하여 프로세스의 PID를 추출하고 제거하는 원라이너.
lsof -ti:3000 | xargs kill
-t 플래그는 출력 ls에서 PID를 제외한 모든 항목을 제거하므로 쉽게 삭제할 수 있습니다.
사용할 수 있습니다.lsof -i:3000
.
그것은 "열린 파일 나열"입니다.그러면 프로세스 목록과 프로세스가 사용하는 파일 및 포트가 표시됩니다.
이러한 프로세스를 강제로 종료하려면 다음 명령을 사용합니다.
lsof -n -i4TCP:3000
OR lsof -i:3000
여기서 3000은 프로세스가 실행 중인 포트 번호입니다.
프로세스 ID(PID)와 실행을 반환합니다.
kill -9 "PID"
PID를 첫 번째 명령을 실행한 후 얻은 숫자로 바꾸기
왜 작동하지 않습니까?PID를 사용하여 프로세스를 중지하려고 하는데 다른 PID에서 실행되고 있으면 다른 계정에서 프로세스를 시작한 것처럼 보입니다. 따라서 로그인하십시오.sudo su
요.
의 신의에서..bash_profile
의바가만기들의 바로 .terminate
프로세스3000 설정:
terminate(){
lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9
}
다음, 럼그, 콜콜로 전화하세요.$terminate
막히면 됩니다.
다중 포트를 죽입니다.
$ npx kill-port 3000 8080 8081
Process on port 3000 killed
Process on port 8080 killed
Process on port 8081 killed
이것이 도움이 되길 바랍니다!
lsof -P | grep ':3000' | awk '{print $2}'
이것은 MacOS에서 테스트된 pid를 제공합니다.
OS-X El 캡틴의 명령줄에서 실행:
kill -kill `lsof -t -i tcp:3000`
lsof의 Terse 옵션은 PID만 반환합니다.
포트에서 프로세스를 종료하는 방법 중 하나는 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
포트를 차단하는 프로세스를 보려면 다음과 같이 하십시오.
netstat -vanp tcp | grep 3000
포트를 차단하는 프로세스를 종료하려면:
kill $(lsof -t -i :3000)
찾기 및 죽이기:
이 단일 명령줄은 쉽고 올바르게 작동합니다.
kill -9 $(lsof -ti tcp:3000)
열린 연결 찾기
ls of -i -P | grep -i "듣기"
프로세스 ID별 킬
kill -9 'PID'
이를 위한 가능한 방법:
정상
top 명령은 시스템의 리소스 사용량을 확인하고 시스템 리소스를 가장 많이 사용하는 프로세스를 확인하는 전통적인 방법입니다.상단에는 CPU를 가장 많이 사용하는 프로세스가 상단에 있는 프로세스 목록이 목록이 표시됩니다.
ps
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
lsof -i tcp:port_number
해당 포트에서 실행 중인 프로세스를 나열합니다.
kill -9 PID
그 과정을 죽일 것입니다.
당신의 경우에는, 그렇게 될 것입니다.
lsof -i tcp:3000
터미널에서 프로세스의 PID를 찾습니다.
kill -9 PID
이것을 위해 작은 기능을 만들었는데, 당신의 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을 할당합니다).
그것이 실패하면, 당신은 항상 입력할 수 있습니다.kill -9 $(cat tmp/pids/server.pid)
레일 루트 디렉터리에서
이 두 가지 명령은 서버 프로세스를 찾고 종료하는 데 도움이 됩니다.
- ls of -wni tcp:3000
- 킬 -9 pid
kill -9 $(lsof -ti:3000)
MacOS에서는 항상 작동합니다.
node.js 프로젝트를 수행하는 경우 패키지에 추가할 수 있습니다.json 스크립트는 다음과 같습니다;
"scripts": {
...
"killme": "kill -9 $(lsof -ti:3000)",
...
},
그리고나서
npm run killme
--
또한 macOS에 시스템 전체 별칭을 추가하려면 다음 단계를 수행합니다.
홈 디렉토리로 이동합니다.
cd ~
nano 또는 vim을 사용하여 .bash_profile 또는 zsh 프로파일을 엽니다.
vi .bash_profile
별칭 추가( i 누름):
alias killme="kill -9 $(lsof -ti:3000)"
파일 저장
터미널 다시 시작
유형killme
종착역까지
물론 포트 3000을 원하는 대로 변경할 수 있습니다.
에 추가~/.bash_profile
:
function killTcpListen () {
kill -QUIT $(sudo lsof -sTCP:LISTEN -i tcp:$1 -t)
}
그리고나서source ~/.bash_profile
그리고 실행
killTcpListen 8080
sindresorhus의 fkill 도구를 사용하여 다음을 수행할 수 있습니다.
$ fkill :3000
노드 종료(Mac OS Catalina)에 적합합니다.
killall -9 node
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
이름 또는 포트별로 여러 프로세스를 제거하는 도우미 배시 함수입니다.
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
해보세요.
netstat -vanp tcp | grep 3000
사용자:
lsof -wni tcp:3000
PID를 가져오고, 다음을 수행합니다.
kill -9 <PID>
내가 좋아하는 원라이너:sudo kill `sudo lsof -t -i:3000`
Mac에서 포트 3000을 제거하려면 다음 명령을 실행합니다.
kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)
언급URL : https://stackoverflow.com/questions/3855127/find-and-kill-process-locking-port-3000-on-mac
'programing' 카테고리의 다른 글
명령줄의 프로세서/코어 수 (0) | 2023.05.29 |
---|---|
PostgreSQL - 데이터베이스 이름 변경 (0) | 2023.05.29 |
gitlab에서 권한을 가져오는 중 거부됨(공개 키) (0) | 2023.05.29 |
.NET 어셈블리에 대한 CLS 준수 설정 (0) | 2023.05.29 |
"파일 끝에 새 줄 없음" 로그의 의미는 무엇입니까? (0) | 2023.05.29 |