> 프로세스 관리 > lsof

lsof: 열린 파일 목록 보기

lsof(list open files)는 유닉스 계열 시스템에서 열려 있는 모든 파일과 해당 파일을 열고 있는 프로세스에 대한 정보를 보여주는 강력한 명령줄 유틸리티입니다. 일반 파일뿐만 아니라 네트워크 소켓, 파이프, 디바이스 등 시스템에서 '파일'로 간주되는 모든 것을 포함하여 상세한 정보를 제공합니다.

개요

lsof는 시스템 관리자가 특정 파일이 어떤 프로세스에 의해 사용되고 있는지, 또는 어떤 프로세스가 특정 네트워크 포트를 사용하고 있는지 등을 파악할 때 매우 유용합니다. 파일 시스템 문제 해결, 네트워크 연결 디버깅, 프로세스 관리 등 다양한 상황에서 활용됩니다.

주요 기능

  • 프로세스 ID (PID)별 열린 파일 확인
  • 사용자별 열린 파일 확인
  • 특정 파일 또는 디렉토리를 열고 있는 프로세스 찾기
  • 네트워크 연결 및 포트 사용 정보 확인
  • 파일 시스템 마운트 지점에 대한 정보 제공

주요 옵션

lsof는 다양한 필터링 및 출력 옵션을 제공하여 사용자가 원하는 정보를 효율적으로 얻을 수 있도록 돕습니다.

필터링 옵션

출력 형식 옵션

생성된 명령어:

명령어를 조합해 보세요.

설명:

`lsof` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

lsof 명령어의 다양한 활용 예시를 통해 시스템의 열린 파일 및 네트워크 연결 상태를 파악할 수 있습니다.

모든 열린 파일 보기

sudo lsof

시스템의 모든 열린 파일을 나열합니다. (일반적으로 root 권한 필요)

특정 프로세스가 열고 있는 파일 보기

lsof -p 1234

PID가 1234인 프로세스가 열고 있는 모든 파일을 확인합니다.

특정 사용자가 열고 있는 파일 보기

lsof -u www-data

'www-data' 사용자가 열고 있는 모든 파일을 나열합니다.

특정 포트를 사용 중인 프로세스 찾기

sudo lsof -i :80 -n -P

80번 포트(HTTP)를 사용 중인 프로세스를 찾습니다. 호스트 이름 및 포트 이름 조회를 건너뛰어 빠르게 출력합니다.

특정 파일/디렉토리를 열고 있는 프로세스 찾기

lsof /var/log/syslog
lsof +D /tmp

/var/log/syslog 파일을 열고 있는 프로세스를 찾거나, /tmp 디렉토리 내의 열린 파일을 재귀적으로 찾습니다.

네트워크 연결만 보기 (LISTEN 상태)

sudo lsof -i -n -P | grep LISTEN

현재 시스템의 모든 LISTEN 상태 네트워크 연결을 확인합니다.

설치

lsof는 대부분의 리눅스 배포판에 기본적으로 포함되어 있지 않을 수 있으므로, 필요한 경우 패키지 관리자를 통해 설치해야 합니다.

Debian/Ubuntu

sudo apt update
sudo apt install lsof

apt 패키지 관리자를 사용하여 lsof를 설치합니다.

CentOS/RHEL/Fedora

sudo yum install lsof
# 또는
sudo dnf install lsof

yum 또는 dnf 패키지 관리자를 사용하여 lsof를 설치합니다.

팁 & 주의사항

lsof를 효과적으로 사용하기 위한 팁과 주의할 점입니다.

성능 및 권한

  • lsof는 시스템의 모든 열린 파일을 스캔하므로, 매우 바쁜 시스템에서는 실행 시간이 길어질 수 있습니다. 필요한 정보만 필터링하여 사용하는 것이 좋습니다.
  • 대부분의 중요한 정보(특히 다른 사용자의 프로세스 정보)를 보려면 `root` 권한이 필요합니다.

출력 가독성 향상

  • 출력 결과가 방대할 수 있으므로 `grep`, `awk`, `less` 등과 함께 파이프(|)로 연결하여 사용하는 것이 일반적입니다.
  • `-n`과 `-P` 옵션은 DNS 및 서비스 이름 조회를 건너뛰어 `lsof` 실행 속도를 크게 향상시키므로, 특별한 이유가 없다면 항상 함께 사용하는 것이 좋습니다.

동일 카테고리 명령어