포트 80에서 실행 중인 프로세스를 종료합니다.

포트 80에서 실행 중인 프로세스를 종료합니다.

내가 죽이고 싶은 프로세스는 다음과 같습니다.

sooorajjj@Treako ~/Desktop/MerkMod $ sudo netstat -tunap | grep :80
tcp6    0   0 :::80   :::*     LISTEN    20570/httpd

답변1

실행 중인 프로세스가 포트를 사용하고 있는지 찾는 방법에는 여러 가지가 있습니다.

fusionr를 사용하면 수신 포트와 연결된 여러 인스턴스의 PID가 제공됩니다.

sudo apt-get install psmisc
sudo fuser 80/tcp

80/tcp:               1858  1867  1868  1869  1871

발견되면 프로세스를 중지하거나 종료할 수 있습니다.

lsof를 사용하여 PID 및 자세한 내용을 찾을 수도 있습니다.

sudo lsof -i tcp:80

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
nginx   1858     root    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1867 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1868 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1869 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1871 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  

리미트 소켓듣다포트 80에서(포트 80에 연결된 클라이언트 대신):

sudo lsof -i tcp:80 -s tcp:listen

자동으로 죽이세요:

sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill

답변2

다음은 실행할 명령을 보여주는 한 줄의 내용입니다.

echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')

종료할 실제 프로세스 echo로 대체합니다 .sudo

답변3

열려 있는 포트를 나열하는 세 가지 옵션을 제공합니다.제쉬~의whatisonport:

netstat -anp --numeric-ports | grep ":${PORT}\>.*:" 

fuser -v "${PORT}"/tcp

lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"

나는 이것이 netstat빠르고 간결하며 다른 사용자가 연 포트를 나열하기 때문에 선호합니다. (해당 프로세스의 이름과 PID를 나열하려면 여전히 수퍼유저/사용자 권한이 필요합니다.)

산출

$ netstat -anp --numeric-ports | grep ":80\>.*:" 
tcp6       0      0 :::80           :::*            LISTEN      1914/apache2    

$ fuser -v "80/tcp"
                     USER        PID ACCESS COMMAND
80/tcp:              root       1914 F.... apache2
                     www-data  12418 F.... apache2
...

$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2  1914     root    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
apache2 12418 www-data    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
...

두 경우 모두 grep로컬 측의 포트만 일치시키고 원격 포트 80에 대한 연결 열기를 건너뛰는 것입니다. (대안은 -lwith netstat또는 with 를 lsof사용 하는 -sTCP:LISTEN것이지만, 위의 grep도 잡기를 선호합니다.나가는연결하다~에서특정 포트가 때때로 관심을 끌 수 있습니다. )

대신 디스플레이를 lsof사용 하면 grep이 가능해집니다. 이 옵션은 적시에 완료되도록 강제합니다.-P:80:http-S 2lsof

프로세스 종료

를 사용한다고 가정하면 netstat다음과 같이 PID를 얻을 수 있습니다.

$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...

이러한 PID를 다음에 전달할 수도 있습니다 kill.

... | xargs -d '\n' kill -KILL

그러나 정규식을 사용할 때 오탐(false positive)이 발생할 가능성이 종종 있으므로 초기 출력을 보고 netstat실행할지 여부를 수동으로 결정하는 것이 좋습니다.

$ kill -KILL 1914

당신은 또한 볼 수 있습니다

나는listopenports이것은 흥미로울 것입니다.

답변4

이를 수행하는 쉬운 방법이 있습니다. 먼저 어떤 프로세스가 포트 80을 사용하고 있는지 확인하세요.네트워크 통계:

netstat -ntl | grep 80

이제 다음 명령을 사용하여 프로세스 이름을 얻고 프로세스를 종료합니다.그들 모두를 죽일주문하다:

killall -9 process name

관련 정보