나는 항상 포트 3000에서 수신 대기 중인 프로세스 ID를 종료하고 싶습니다. 그래서 현재는 다음을 사용하고 있습니다.
1.lsof -i tcp:3000
다음과 같이 출력됩니다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ruby 6697 xxxx 5u IPv4 251982 0t0 TCP *:3000 (LISTEN)
2를 사용하여 PID를 종료하겠습니다
.kill -9 6697
이 프로세스를 자동으로 수행하는 bash 프로그램을 만들고 싶습니다.
첫 번째 명령 출력의 PID를 얻기 위해 xargs를 사용하려고 시도했지만 실패했습니다.
답변1
-t
먼저, PID만 방출하는 lsof 옵션이 필요합니다 . kill에 pid 목록을 제공할 수도 있습니다.
kill -9 $(lsof -ti tcp:3000)
이 작업을 자주 수행하는 경우 별칭을 만드십시오.
alias kill3000='kill -9 $(lsof -ti tcp:3000)'
답변2
여기 있습니다( 없이 xargs
):
lsof -i tcp:8080 | while read cmd pid rest; do ((pid)) && kill -9 $pid; done