용어집/문제가 생겼을 때

lsof

다른 이름: list open files(열린 파일 나열)

간단한 답

lsof는 모든 프로세스가 열어 둔 파일, 폴더, 네트워크 연결을 나열하는 터미널 명령입니다. Mac에서는 어떤 프로세스가 파일을 사용 중인지, 무엇이 디스크 추출을 막고 있는지, 무엇이 포트에서 수신 대기 중인지 알려 줍니다.

lsof는 list open files의 줄임말이며 macOS에 기본으로 들어 있습니다. 아무것도 붙이지 않고 실행하면 열린 파일마다 한 줄씩 수천 줄을 출력하므로, 거의 항상 파일, 폴더, 디스크 또는 포트를 지정해 목록을 좁힙니다.

sudo 없이 실행하면 내 프로세스만 보여 줍니다. 붙여서 실행하면 Spotlight 같은 macOS 자체 프로세스도 포함됩니다.

알아 두면 좋은 lsof 명령

각 명령은 경로, 포트 또는 프로세스를 받아 목록을 좁힙니다.

  • lsof /path/to/file: 이 파일을 무엇이 열고 있는지
  • sudo lsof /Volumes/NAME: 디스크에 열린 모든 것
  • lsof +D /path/to/folder: 폴더 안에 열린 모든 것
  • lsof -nP -iTCP:3000 -sTCP:LISTEN: 포트 3000에서 무엇이 수신 대기 중인지
  • lsof -p <PID>: 한 프로세스가 열어 둔 모든 파일

출력 읽는 법

COMMAND는 아홉 글자로 잘린 프로세스 이름, PID는 프로세스 번호, USER는 실행하는 사용자입니다. FD는 파일이 어떻게 열려 있는지를 나타냅니다. 숫자 뒤의 r은 읽기, w는 쓰기, u는 둘 다이고, cwd은 프로세스가 작업 중인 폴더, txt는 프로그램과 불러온 라이브러리입니다. NAME은 경로 또는 네트워크 주소입니다.

lsof가 느리거나 경고를 출력하는 이유

+D로 큰 폴더 안을 살펴보면 그 아래의 모든 파일을 읽으므로 몇 분이 걸릴 수 있습니다. sudo 없이 실행하면 읽을 수 없는 파일에 대한 경고가 나오는 것은 정상입니다.

자주 묻는 질문

lsof는 무엇의 줄임말인가요?

List open files(열린 파일 나열)입니다.

Mac에 lsof가 설치되어 있나요?

네. macOS에 기본으로 들어 있으며, 위치는 /usr/sbin/lsof입니다.

lsof에 아무것도 나오지 않는 이유는 무엇인가요?

내 프로세스 중에는 그 파일을 열고 있는 것이 없다는 뜻입니다. sudo와 함께 실행하면 macOS와 다른 사용자가 실행하는 프로세스도 포함됩니다.

관련 항목

단계별 안내: 디스크가 추출되지 않음.

활성 상태 보기보다 나은 것을 찾고 있나요? Mac용 활성 상태 보기 대체 앱 추천을 확인하거나 용어집의 모든 용어를 둘러보세요.