우분투 실전 명령어 | fuser로 포트·파일 점유 프로세스 즉시 찾기

우분투 실전 명령어 | fuser로 포트·파일 점유 프로세스 즉시 찾기

언제 쓰는가

서비스 재기동 전에 "이미 사용 중인 포트" 오류가 뜰 때 가장 먼저 씁니다. 로그 파일 회전이나 마운트 해제가 안 되는 상황에서 어떤 프로세스가 파일이나 디렉터리를 붙잡고 있는지 확인할 때도 빠릅니다.

바로 쓰는 명령어

# 8080 포트를 점유한 PID 확인
sudo fuser 8080/tcp

# 상세 정보까지 함께 확인
sudo fuser -v 8080/tcp
# 특정 파일을 쓰는 프로세스 확인
sudo fuser -v /var/log/myapp/app.log

# 특정 마운트포인트를 점유한 프로세스 확인
sudo fuser -vm /mnt/data
# 점유 프로세스 종료(신중히 사용)
sudo fuser -k 8080/tcp

# 먼저 TERM 시도 후 남으면 KILL
sudo fuser -TERM -k 8080/tcp
sleep 1
sudo fuser -KILL -k 8080/tcp

핵심 옵션/패턴

  • -v: PID, USER, ACCESS, COMMAND를 보기 쉽게 출력합니다.
  • -k: 조회한 대상의 점유 프로세스에 시그널을 보냅니다.
  • -TERM, -KILL: -k와 함께 시그널 종류를 명시할 때 씁니다.
  • -m: 파일이 아니라 파일시스템 단위로 점유 프로세스를 찾습니다.
  • -n tcp 또는 포트/tcp 형식: 네트워크 소켓 점유 확인 시 가장 자주 쓰는 패턴입니다.

명령 출력 예시

$ sudo fuser -v 8080/tcp
                     USER        PID ACCESS COMMAND
8080/tcp:            ubuntu     2145 F.... node
$ sudo fuser -vm /mnt/data
                     USER        PID ACCESS COMMAND
/mnt/data:           root      kernel mount /
                     mysql      3321 ..c.. mysqld
                     backup     7750 f.... rsync

자주 하는 실수

  • sudo 없이 실행해서 결과가 비어 있다고 오해하는 경우가 많습니다. 권한 문제일 때는 반드시 sudo로 다시 확인해야 합니다.
  • -k를 바로 실행해 운영 서비스까지 내려버리는 실수가 자주 납니다. 먼저 -v로 대상 PID와 프로세스를 확인한 뒤 종료해야 안전합니다.
  • 포트만 비었다고 문제 끝이라고 판단하면 안 됩니다. systemd가 자동 재시작 중이면 금방 같은 PID 패턴이 다시 생길 수 있습니다.

검증 방법

# 종료 전 점유 확인
sudo fuser -v 8080/tcp

# 필요 시 종료
sudo fuser -TERM -k 8080/tcp

# 종료 후 재확인
sudo fuser -v 8080/tcp || true
ss -lntp | grep :8080 || true
# 서비스가 있다면 상태까지 확인
sudo systemctl status myapp --no-pager
sudo journalctl -u myapp -n 50 --no-pager

운영 팁

운영 서버에서는 fuser -k를 습관적으로 쓰기보다, 먼저 systemctl stop으로 정상 종료를 시도하고 실패할 때만 보조 수단으로 쓰는 편이 안전합니다. 장애 대응 중에는 종료 전후 명령 결과를 티켓이나 장애 노트에 남겨 두면 재발 분석이 훨씬 빨라집니다.

출처

  • Ubuntu Manpages
  • psmisc 프로젝트 문서
  • Linux man-pages 프로젝트