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


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.