Bricoleur88 Tech Insight

Tech News, Insights & Opinions

Study

포트를 알고 있을 경우 프로세스 강제 종료(PID kill) – fuser 이용법 | Linux

fuser command

fuser 명령어를 사용하여 프로세스의 포트번호를 알 고 있을 경우 간단하게 종료할 수 있는 방법이 있어 소개 합니다.

1. fuser 의 정보

info fuser

2. fuser 기본 사용법

예) 20001 번 포트를 사용중인 프로세스를 강제 종료할 경우

fuser -k 20001/tcp

kill 명령어는 PID(프로세스 아이디)를 알아야 사용가능하지만, fuser는 PID는 모르지만 서비스의 포트넘버를 알고 있을 경우 유용합니다.

아래의 kill 명령어를 사용해서 종료하는 과정과 비교해보면 그 차이를 알 수 있습니다.

3. 포트넘버만 알 고 있을 때, kill 명령어로 종료하는 과정

1. 알고 있는 포트넘버로 검색하여 프로세스 아이디 (PID) 찾는다

netstat -tnlp|grep 20001

(여기서 20001 이 해당되는 PID 찾고자 하는 알고 있는 포트 번호이며, 그 결과 PID가 1234 라고 나왔다고 가정)

2. 해당 프로세스를 강제 종료

kill -9 1234

1234가 1번 과정을 통해 찾은 PID(프로세스 아이디), -9 는 프로세스아이디를 직접 지정하여 종료하고자 할 때 사용하는 옵션

3. 또 다른 방법 (한 줄 명령어)

gawk를 사용해서 netstat의 결과에서 프로세스를 가져온 후 kill 명령어에 넘김.

kill -9 `netstat -tnlp|grep 20001|gawk '{ print $7 }'|grep -o '[0-9]*'`

4. 다른 명령어 : lsof

리눅스는 파일 시스템을 통해서 일반 파일 뿐만 아니라, 디렉토리, 소켓에 대한 관리까지 할 수 있습니다. 따라서 특정 프로세스의 fd(file descriptor) 를 보는것은 시스템 모니터링에 큰 도움이 됩니다.

파일 시스템에서 ls로 보이지는 않지만 실제로 지워지지 않고 남아있는 경우가 있습니다. 레퍼런스 카운트가 0이 되지 않기 때문입니다.
이 때, 프로세스가 열고 있는 파일이 위치한 디스크를 정상적으로 unmount 할 수 없어 뭐가 쓰고 있는건지 조회해야하는 경우가 있다. 이 때는 lsof (보통 엘에스오브 라고 읽는것 같습니다) 를 사용하는데, fuser와 맥락이 비슷하고 lsof 역시 사용전 명령어를 설치해야 하긴 합니다. lsof는 다음에 다뤄보도록 하겠습니다.

참고

https://banbanmumani.github.io/2017/12/19/%EB%A6%AC%EB%88%85%EC%8A%A4%ED%8F%AC%ED%8A%B8%EB%A1%9C%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%A3%BD%EC%9D%B4%EA%B8%B0


Bricoleur88 Tech Insight 에서 더 알아보기

구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다