불량 응용 프로그램이 열어 둔 포트를 닫거나 해제하는 방법?


16

Fedora 13 64 비트를 사용하고 있습니다. 내 이클립스 프로그램은 포트 9050에서 서버를 시작하지만 프로그램을 종료하면 이클립스가 제대로 서버를 종료하지 못합니다. 이클립스를 재시작해도 아무 효과가 없습니다.

명령 줄에서 포트를 강제로 닫거나 바인딩을 해제하려면 어떻게합니까?

다시 부팅하거나 로그 오프했다가 다시 켜면 포트가 지워지지만 나보다 느린 프로세스입니다. 명령 줄에서 강제로 포트를 닫으려고합니다.

답변:


6

강제로 닫는 유일한 방법은 청취 포트는 수신 대기중인 프로세스를 종료하는 것입니다. 용도 lsof, netstat, fuser - 루트로 - 프로세스 ID를 찾으십시오. 프로세스가 종료되면 (자체적으로 또는 종료 됨으로써) 커널은 열린 소켓을 모두 자동으로 정리합니다. (단, 같은 포트에서 몇 분 동안 프로그램의 수신이 거부되는 경우가있을 수 있습니다.이 경우 대기 만 있으면됩니다.)


16
lsof -n -i

찾고있는 프로세스를 찾아서 종료하십시오.

에서 lsof 조작 :

-엔 이 옵션은 네트워크 번호를 네트워크 파일의 호스트 이름으로 변환하는 것을 금지합니다. 변환을 금지하면 lsof가 더 빨리 실행될 수 있습니다. 또한 호스트 이름 조회가 제대로 작동하지 않을 때 유용합니다.

-나는 [나는] 이 옵션은 인터넷 주소가 i에 지정된 주소와 일치하는 파일 목록을 선택합니다. 주소를 지정하지 않으면이 옵션은 모든 인터넷 및 x.25 (HP-UX) 네트워크 파일 목록을 선택합니다.

같은 대답 이 질문 나는 생각한다.


4
던지다 | grep ":9050" (또는 포트 번호)를 사용하여 쉽게 출력을 필터링 할 수 있습니다
isaacparrot

4

당신은 fuser 명령과 함께 -k 스위치.

예를 들어, 포트 111을 닫으려면 다음을 수행하십시오. fuser -k 111/tcp (이것은 퓨저가 암시 적으로 수행 할 때 프로세스의 ID를 찾아내는 번거 로움을 덜어줍니다)

일부 프로세스는 일단 닫히면 자동으로 다시 시작됩니다. 이를 위해서는 각 프로세스의 config 파일에서 적절한 해결 방법을 찾아야합니다.


-3

나는 같은 문제를 가지고 있었는데, 창에서 cmd 명령을 사용하여 포트를 듣고있는 프로세스를 찾는다.

netstat -a -b

그런 다음 작업 관리자를 사용하여 종료 할 수 있습니다.


2
미안, 나는 downvoted. 당신은 "Windows에서"언급. 실행 파일 이름을 나타내는 netstat의 "-b"매개 변수는 Microsoft Windows에만 해당됩니다. (유닉스 netstat 변종 유사 기능을 할 수 있지만 일반적으로 동일한 매개 변수를 사용하지 않습니다.) 그러나 질문은 "페도라", 그래서이 질문의 묻는 사람은 페도라 13 64 비트, 다른 운영 체제에 대한 정보를 찾고 있었다. Fedora를위한 netstat의 man 페이지 사용중인 것을 나타냅니다. -p PID (실행 파일의 이름을 식별하는 데 사용할 수 있음)를 보여줍니다.
TOOGAM

1
이 대답에는 몇 가지 실수가 있습니다. 대답에는 피할 수있는 문법 오류가 있습니다. 대답은 명확하게 언급 된 Fedora에도 해당 질문의 첫 번째 문장에 적용되지 않습니다. 이 답변이 30 분 전에 제출되었을 때 질문에이 정보가 포함되어 있지 않은 것과 달리 5 년 전인 2011 년 7 월 이후로 문제가 수정되지 않았습니다. 그래서 저는이 답변을 "나도"대답합니다. 실제로는 거의 도움이되지 않습니다.
Ramhound
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.