포트 번호를 사용하여 Linux 프로세스를 종료하는 방법


Linux 시스템의 특정 포트에서 실행 중인 프로세스를 중지해야 하는 상황에 직면한 적이 있습니까?

실행 중인 애플리케이션이 오작동하거나 네트워크 리소스나 로컬 CPU 성능을 많이 소모하는 것은 아닌지 걱정될 수 있습니다. 이러한 응용 프로그램은 제거하고 싶은 보안 위협이 될 수도 있습니다.

이유가 무엇이든 터미널에서 fuser,lsofnetstat명령을 사용할 수 있습니다(kill과 함께).) 포트 번호를 사용하여 Linux 프로세스를 찾고 종료하는 데 도움이 됩니다. 이 명령은 Ubuntu를 포함한 대부분의 Linux 운영 체제에서 작동합니다.

fuser 명령을 사용하여 Linux 프로세스를 종료하는 방법

포트 번호를 사용하여 프로세스를 종료하는 가장 쉬운 방법 중 하나는 fuser명령을 사용하는 것입니다. 리눅스 터미널 명령 은 파일이나 소켓에 액세스하는 프로세스를 나열하거나 종료할 수 있습니다. 앱이 네트워크 활동으로 실행되면(따라서 개방형 포트를 사용하는 경우) 아마도 다음 두 가지 중 하나를 수행하고 있을 것입니다.

계속하기 전에 Linux PC에서 명령줄 터미널을 사용하는 데 익숙한지 확인해야 합니다.

퓨저를 사용하여 포트 번호를 사용하는 프로세스를 나열하려면 다음 구문을 사용할 수 있습니다.

fuser -n 프로토콜 포트

이 예에서 프로토콜tcp또는 udp일 수 있으며, port는 원하는 포트 번호입니다. 확인하다. 예를 들어 어떤 프로세스가 TCP 포트 80을 사용하고 있는지 확인하려면 다음을 실행하세요.

퓨저 -n TCP 80

해당 포트를 사용하는 프로세스의 프로세스 ID(PID)가 인쇄됩니다.

해당 프로세스를 종료하려면 fuser-k옵션을 추가하면 됩니다. 그러면 각 프로세스에 SIGTERM 신호를 보내 정상적으로 종료하도록 요청합니다. 예:

퓨저 -k -n TCP 80

이렇게 하면 TCP 포트 80을 사용하는 모든 프로세스가 종료됩니다.

일부 프로세스가 SIGTERM에 응답하지 않는 경우 -k대신 -KILL을 사용할 수 있습니다. 이렇게 하면 현재 실행 중인 프로세스를 강제로 즉시 종료하는 데 도움이 되는 종료 신호(SIGKILL)가 전송됩니다. 하지만 이로 인해 데이터 손실이나 손상이 발생할 수 있으므로 주의해서 사용하세요. 예를 들어:.

퓨저 -KILL -n tcp 80

이렇게 하면 TCP 포트 80을 사용하는 모든 프로세스가 강제로 종료됩니다. 문제가 발생하는 경우 슈퍼 사용자로 이 명령을 실행하거나(sudo명령 사용) 대신 루트사용자를 사용하여 실행하세요.

lsof 명령을 사용하여 Linux 프로세스를 종료하는 방법

Linux PC에서 포트 번호를 사용하여 프로세스를 종료하는 또 다른 방법은lsof명령을 사용하는 것입니다. 이 명령은 시스템에 열려 있는 파일과 소켓을 나열할 수 있습니다.

특정 포트 번호를 사용하는 프로세스를 나열하려면 다음 구문을 사용할 수 있습니다.

lsof -i 프로토콜:포트

이전과 마찬가지로 protocoltcp또는 udp일 수 있으며, port는 원하는 포트 번호입니다. 확인하다. 예를 들어 어떤 프로세스가 TCP 포트 53(일반적으로 DNS 요청에 사용됨)을 사용하고 있는지 확인하려면 다음 명령을 실행하세요.

lsof -i tcp:53

이렇게 하면 PID를 포함하여 해당 포트를 사용하는 각 프로세스에 대한 일부 정보가 인쇄됩니다.

해당 프로세스를 종료하려면 lsof와 함께 -t옵션을 사용할 수 있습니다. 그러면 다른 정보 없이 프로세스의 PID만 인쇄됩니다. 그런 다음 신호 옵션을 사용하여 이 출력을 kill명령으로 파이프할 수 있습니다. 예:

kill $(lsof -t -i tcp:53)

이렇게 하면 TCP 포트 53을 사용하는 모든 프로세스에 SIGTERM 신호(기본값)가 전송됩니다.

일부 프로세스가 이전처럼 SIGTERM 신호에 응답하지 않는 경우 kill뒤에 아무 것도 사용하지 않는 대신 -9를 사용할 수 있습니다. 이렇게 하면 이전과 같이 SIGKILL 신호가 전송되어 즉시 종료되지만 데이터 손실이나 손상이 발생할 수도 있습니다. 예:

kill -9 $(lsof -t -i tcp:53)

이렇게 하면 TCP 포트 53을 사용하는 모든 프로세스에 SIGKILL 신호(기본값)가 강제로 전송됩니다.

netstat 명령을 사용하여 Linux 프로세스를 종료하는 방법

netstat명령을 사용하면 활성 및 개방형 네트워크 포트를 사용하여 Linux PC에서 실행 중인 프로세스를 추적할 수도 있습니다. netstat를 사용하면 시스템의 네트워크 연결과 통계를 확인하여 문제가 있는 프로세스를 정확히 찾아낼 수 있습니다.

PID와 함께 포트 번호를 사용하여 프로세스를 나열하려면 PID를 표시하는 -p와 표시하는 -l의 두 가지 옵션을 추가해야 합니다. 청취 소켓만 해당됩니다..

또한 프로토콜(tcp, udp 등)을 지정하고 선택적으로 상태(LISTEN 등)별로 필터링해야 합니다. 예를 들어, 어떤 포트에서 수신 대기 중인 TCP 프로세스를 확인하려면 다음을 실행하세요.

netstat -p TCP -l

이렇게 하면 PID를 포함하여 모든 포트에서 수신 대기 중인 각 TCP 소켓에 대한 정보가 인쇄됩니다.

특정 포트별로 필터링하려면 이름 대신 숫자 주소를 표시하는 -n옵션을 추가해야 합니다. 또한 정확한 주소 형식([protocol][@hostname|hostaddr][:service|port])을 지정해야 합니다.

예를 들어 어떤 TCP 프로세스가 포트 80에서 수신 대기하는지 확인하려면 다음을 실행하세요.

netstat -p tcp -l -n 80

이렇게 하면 PID를 포함하여 포트 8080을 수신하는 각 TCP 소켓에 대한 정보가 인쇄됩니다.

해당 프로세스를 종료하려면 원하는 신호 옵션과 netstat에서 얻은 PID와 함께 kill명령을 사용할 수 있습니다. 예:

1234 5678을 죽여라

이렇게 하면 PID가 12345678인 프로세스에 SIGTERM 신호(기본값)가 전송됩니다.

일부 프로세스가 이전처럼 SIGTERM 신호에 응답하지 않는 경우 kill뒤에 아무 것도 사용하지 않는 대신 -9를 사용할 수 있습니다. 이렇게 하면 이전과 같이 SIGKILL 신호가 전송되어 즉시 종료되지만 이전과 같이 데이터 손실이나 손상이 발생할 수 있습니다. 예:

죽이기 -9 1234 5678

이것은 예를 들어 PID가 12345678인 프로세스에 SIGKILL 신호를 강제로 보냅니다. 1234를 실행 중인 프로세스에 대한 올바른 PID로 바꾸세요.

Linux 애플리케이션 제어

위에 설명된 단계 덕분에 Linux 명령줄에서 포트 번호를 사용하여 실행 중인 Linux 프로세스를 빠르게 종료할 수 있습니다. 특히 SIGKILL 신호를 사용하여 프로세스를 종료할 때는 원치 않는 부작용이 발생할 수 있으므로 주의해야 합니다. 결국 시스템이 불안정해지는 것을 원하지 않을 것입니다.

Linux에서 시스템 성능을 더 자세히 살펴보고 싶으십니까? 다음에는 Linux에서 메모리 사용량을 확인하세요 하세요. 잠재적인 보안 위험이 걱정된다면 Linux에서 비밀번호를 변경하세요 하는 것도 좋습니다.

새로운 Linux 배포판으로 전환해야 합니까? 초보자라면 리눅스 민트를 고려해보세요 안전하고 안정적인 대안이 있습니다..

.

관련 게시물:


2.04.2023