Windows에서 lsof와 유사한 기능을 수행하는 명령어는 여러 가지가 있습니다.

1. handle (Sysinternals) - 가장 강력한 도구

Microsoft의 Sysinternals 도구 중 handle.exe는 lsof와 가장 유사한 기능을 제공합니다.

사용법

Microsoft 공식 사이트에서 handle.exe 다운로드

명령 프롬프트(CMD)에서 실행: handle

현재 열린 파일 핸들을 모두 표시

특정 파일이 어떤 프로세스에서 사용 중인지 확인: handle <파일경로>

특정 프로세스의 열린 파일 목록 확인: handle -p <PID>

2. openfiles - 기본 내장 명령어

Windows에 기본 포함된 명령어지만, 네트워크 공유 파일에 초점이 맞춰져 있음.

사용법

시스템에서 열린 파일 목록 보기: openfiles /query

특정 사용자나 세션의 열린 파일 확인: openfiles /query /fo table

사용하려면 관리자 권한으로 실행해야 하며, 로컬 파일 추적을 활성화하려면 다음 명령이 필요함: openfiles /local on

3. resource monitor (resmon) - GUI 도구

파일 핸들 정보를 확인할 수 있는 GUI 도구

사용법

Win + R → resmon 입력 후 실행

CPU 탭연관된 핸들(Associated Handles) 섹션에서 파일 사용 프로세스 확인

4. tasklist & task manager (작업 관리자)

명령어 사용법

실행 중인 프로세스 목록 확인: tasklist

특정 프로세스의 상세 정보 확인: tasklist /v

작업 관리자 사용법

Ctrl + Shift + Esc를 눌러 작업 관리자 실행

세부 정보 탭 → 열린 파일 핸들 확인 가능

5. PowerShell을 이용한 방법

특정 파일을 사용 중인 프로세스 찾기

Get-Process | Where- { $_.HandleCount -gt 0 }

혹은 특정 파일이 어떤 프로세스에서 열렸는지 확인:

Get-Process | Where- { $_.Path -like "*파일이름*" }

결론

가장 강력한 방법: handle.exe (Sysinternals)

기본 명령어 사용 가능: openfiles

GUI 방식: resmon (리소스 모니터)

PowerShell 스크립트도 가능하지만, handle.exe가 가장 lsof에 가까운 기능을 제공함.


---
"도둑은 집을 떠나며 주인을 욕한다" - 러시아 속담