linux-open-files

/proc 파일 시스템에서 리눅스 프로세스별 열린 파일 목록을 조회합니다. 파일 디스크립터, 메모리 매핑된 파일, 소켓 등을 포함하여 프로세스가 열고 있는 모든 리소스를 확인할 수 있습니다.

명령어 속성

항목설명
명령어 유형드라이버 쿼리
필요 권한관리자
라이선스 사용량집계함
병렬 실행미지원
분산 실행수집 노드에서 실행 (mapper)

문법

linux-open-files

출력 필드

필드타입설명
pid32비트 정수프로세스 ID
cmd_line문자열프로세스 명령줄
user문자열파일을 연 사용자 계정
fd32비트 정수파일 디스크립터 번호. 메모리 매핑 파일이나 현재 작업 디렉터리의 경우 null을 반환합니다.
type문자열파일 유형. REG: 일반 파일, DIR: 디렉터리, CHR: 문자 장치, BLK: 블록 장치, FIFO: 파이프, unix: 유닉스 소켓, IPv4: IPv4 소켓, IPv6: IPv6 소켓, netlink: 넷링크 소켓, a_inode: 익명 inode, unknown: 알 수 없음
file_size64비트 정수파일 크기 (바이트)
target문자열파일 경로 또는 소켓 정보

오류 코드

파싱 오류
오류 코드메시지설명
95040no-read-permission관리자 권한이 없는 사용자가 실행한 경우
런타임 오류

해당 사항 없음

설명

linux-open-files 명령어는 /proc 파일 시스템을 탐색하여 각 프로세스가 열고 있는 파일 목록을 수집합니다.

각 프로세스에 대해 다음 세 가지 유형의 리소스를 조회합니다:

  • /proc/PID/cwd: 프로세스의 현재 작업 디렉터리. typeDIR로 반환합니다.
  • /proc/PID/map_files: 프로세스에 메모리 매핑된 파일. typeREG로 반환합니다.
  • /proc/PID/fd: 프로세스가 열고 있는 파일 디스크립터. 심볼릭 링크가 가리키는 대상의 유형에 따라 일반 파일, 소켓, 파이프 등으로 분류합니다.

파일 디스크립터가 소켓을 가리키는 경우 /proc/net/tcp, /proc/net/udp 등의 네트워크 상태 정보와 대조하여 소켓 유형을 판별합니다. TCP 또는 UDP 소켓이면 IP 주소 버전에 따라 IPv4 또는 IPv6로 분류하고, 넷링크 소켓이면 netlink로 분류합니다.

사용 예

  1. 모든 열린 파일 조회

    linux-open-files
    

    모든 프로세스의 열린 파일 목록을 조회합니다.

  2. 특정 프로세스의 열린 파일 조회

    linux-open-files
    | search pid == 1
    

    PID가 1인 프로세스(init/systemd)가 열고 있는 파일 목록을 조회합니다.

  3. 삭제된 파일을 열고 있는 프로세스 조회

    linux-open-files
    | search type == "REG" and target == "*(deleted)*"
    

    삭제된 일반 파일을 여전히 열고 있는 프로세스를 조회합니다.

  4. 네트워크 소켓을 사용하는 프로세스 조회

    linux-open-files
    | search type == "IPv4" or type == "IPv6"
    | stats dc(target) as socket_count by pid, cmd_line
    

    네트워크 소켓을 사용하는 프로세스별 소켓 수를 집계합니다.

호환성

linux-open-files 명령어는 소나 4.0 이전 버전부터 제공되었습니다.