특정 포트에서 실행중인 프로세스를 어떻게 찾아서 죽이나 요? [복제]


30

중복 가능성 :
Linux에서 특정 포트를 사용하는 프로세스 찾기

Ubuntu Linux 11.04를 사용하고 있습니다. 포트 4444에서 실행중인 프로세스를 찾은 다음 프로세스를 종료하는 쉘 스크립트 표현식을 작성하려면 어떻게해야합니까?


나는 이것이 포트에서 프로세스를 죽이지 않고 죽이는 방법을 요구하기 때문에 이것이 중복이라고 생각하지 않습니다 : fuser -k 9000 / tcp
— Kris

답변:


47

lsof프로세스를 찾는 데 사용할 수 있습니다 .

lsof -t -i:4444

포트 4444에서 수신 대기하는 프로세스의 pid 만 나열합니다.

kill `lsof -t -i:4444`

용감하다면


14
'용감하다면'+1
— Mr. Shickadance

7

당신은 사용 lsof:

# lsof -n | grep TCP | grep LISTEN | grep 4444

출력은 다음과 같습니다.

pname 16125 user 28u IPv6 4835296 TCP *:4444 (LISTEN)

첫 번째 열은 프로세스 이름이고 두 번째 열은 프로세스 ID입니다. 그런 다음 출력을 구문 분석하고 프로세스 ID (PID)가 무엇인지 찾고 kill명령을 사용 하여 종료하십시오.


1
나는 전에 lsof에 대해 들어 본 적이 없습니다. 매뉴얼 페이지를 보면 매우 유용한 것으로 보입니다. 감사!

리눅스의 모든 것은 파일이고 lsof는 파일을 찾을 수있게 해 준다 ... 그래, 매우 유용하다
— jcollum

2

또는 시스템에서 사용할 수없는 netstat -ap경우 lsof사용할 수 있습니다 (정기적으로 작업하는 비지 박스 시스템에는 없으므로).


이것이 내가 작업 한 비지 박스 파생 고정 표시기 이미지에 작동하지 않는 이유 좋은 전화, 궁금 해서요
— jcollum

2
kill -9 `netstat -lanp --protocol=inet | grep 4444 | awk -F" " '{print $7}' | awk -F"/" '{print $1}'`

netstat를 사용하여 숫자 포트 및 상위 프로세스가있는 수신 INET 소켓을 나열합니다. 문자열 4444에 대한 필터는 7 번째 열 (pid / process name)을 가져 와서 "/"로 더 분할하여 pid를 가져옵니다. 명령을 죽 이도록 전달합니다.


2
살인 -9에 반대하는 것이 좋습니다. 정리가 허용되지 않으며 일부 인터넷 앱에는 정리가 필요한 리소스가있을 가능성이 높습니다.
— Rich Homolka
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.