포트를 알고 있을 경우 프로세스 강제 종료(PID kill) – fuser 이용법 | Linux
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는 다음에 다뤄보도록 하겠습니다.
참고
Bricoleur88 Tech Insight 에서 더 알아보기
구독을 신청하면 최신 게시물을 이메일로 받아볼 수 있습니다.