Programing

포트 3000에서 수신 대기하는 프로세스를 종료하는 쉘 스크립트?

crosscheck 2020. 10. 21. 07:42
반응형

포트 3000에서 수신 대기하는 프로세스를 종료하는 쉘 스크립트?


kill3000다음 작업을 자동화하기 위해 bash 별칭을 정의하고 싶습니다 .

$ lsof -i:3000

COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
ruby    13402 zero    4u  IPv4 2847851      0t0  TCP *:3000 (LISTEN)

$ kill -9 13402

alias kill3000="fuser -k -n tcp 3000"

이 시도:

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

-t 플래그는 사용자가 원하는 것입니다. PID 만 표시하고 다른 것은 표시하지 않습니다.

최신 정보

프로세스를 찾을 수없고 오류 메시지를보고 싶지 않은 경우 :

    kill -9 $(lsof -i:3000 -t) 2> /dev/null

bash를 실행한다고 가정합니다.

최신 정보

Basile의 제안은 훌륭합니다. 먼저 프로세스를 종료하려고하면 일반적으로 -TERM 을 종료하고 실패하면 -KILL 을 종료합니다 (일명 kill -9 ).

    pid=$(lsof -i:3000 -t); kill -TERM $pid || kill -KILL $pid

이것을 bash 함수로 만들고 싶을 수도 있습니다.


원래 lsof명령 을 사용하는 또 다른 옵션 :

lsof -n -i:3000 | grep LISTEN | awk '{ print $2 }' | uniq | xargs kill -9

쉘 스크립트에서 이것을 사용하려면 -r플래그를 추가하여 xargs프로세스가 수신하지 않는 경우를 처리 할 수 있습니다 .

... | xargs -r kill -9

어때

alias kill3000="lsof -i:3000 | grep LISTEN | awk '{print $2}' | xargs kill -9"

fuser -n tcp 3000

출력을 산출합니다

3000/tcp:     <$pid>

따라서 다음을 수행 할 수 있습니다.

fuser -n tcp 3000 | awk '{ print $2 }' | xargs -r kill

fuser -k 3000/tcp 또한 작동해야

참고 URL : https://stackoverflow.com/questions/9168392/shell-script-to-kill-the-process-listening-on-port-3000

반응형