OS X 응용 프로그램의 파일 액세스를 모니터링하는 방법은 무엇입니까?


61

나는 나중에에 포함, FileMon을의 OS X의 공동 피고인을 찾고 ProcessMon .

BTW, 프로세스별로 필터링 할 수 있어야합니다.


Mac OS X의 유닉스 유산이 NT 아키텍처와 다르기 때문에 세 가지 옵션을 추가하겠습니다. 도구가 완벽하게 겹치지 않습니다. 현재 진행중인 작업을 파악하거나 특정 파일이 변경된 후 작업을 트리거 할 API 또는 프로그램을 찾고있는 API를 찾고 있습니까?
bmike

답변:


62

Apple Xcode 개발 제품군의 일부인 기기는 모든 파일 액세스 및 쓰기를 모니터링 할 수 있습니다. /Applications/Xcode.app/Contents/Applications/Instruments.app에서 열고 응용 프로그램 또는 프로세스를 선택한 다음 시작을 누릅니다. 메뉴에서 광범위한 필터 옵션을 사용할 수 있습니다.

Xcode의 이전 버전은 /Developer/Applications/Instruments.app에 앱을 저장합니다.


7
Xcode 5부터는 현재 /Applications/Xcode.app/Contents/Applications/Instruments.app에 있으며 XCode 앱-Xcode-> Open Developer Tool-> Instruments에서도 접근 할 수 있습니다.
Mixologic

애플리케이션으로 인해 액세스중인 파일이 발생하지 않으면 작동하지 않습니다
liquidblueocean

실제로 OS X에서는 작동하지 않습니다 : "I / O 활동은 macOS 플랫폼을 지원하지 않습니다". 또한 읽으십시오 : stackoverflow.com/questions/35621938/…

이에 대한 자세한 정보를 제공 할 수 있습니까? 어떤 기기-활동 모니터? 나는 여기에 모든 프로세스에 대한 긴 출력을보고 있어요되지 디스크 I / 하나 개의 프로세스에 대한 O를 필터링하는 방법을 잘
엘리엇

43

명령이 opensnoop있습니다. 인수없이 실행하면 출력에 압도적이지만 인수 -n name로 실행하여 출력을 named 프로세스로 제한 할 수 있습니다 name.


1
마찬가지로 sudo opensnoop | grep .classpath클래스 경로 파일에 대한 액세스를 제공합니다.
Dávid Natingga

1
참고 opensnoop과 Instruments는 모두 동일한 DTrace 엔진에 대한 프론트 엔드입니다. 다른 프론트 엔드 : dtrace.org/blogs/brendan/2011/10/10/…
MarcH

13

Launchd는 파일이 항상 실행되므로 파일을 모니터링하기위한 기본 시스템 수준 도구 (및 폴더는 특수 파일)입니다. 헤이젤 은 출시 된 WatchPaths에 예쁜 GUI를 배치하는 데 도움이되는 하나의 프로그램입니다. 수백 가지 튜토리얼과 위키 백과 기사, Apple dev 문서 등 수많은 팁을 소개합니다.

fseventsd는 일부 변경 사항을 기록하므로 FSeventer를 사용 하거나 시작된 파일이 차가 아닌 경우 해당 파일에 액세스 할 수 있습니다 .

fs_usagelsof 는 실행중인 IO 하위 시스템을 활용하기위한 프로세스 인식 명령 줄 도구입니다. fs_usage 버퍼는 오버로드 될 수 있으므로보다 확실한 것을 원하고 "빠른 들여다보기"를 원치 않으면 다른 명령과 마찬가지로 전체적인 정확한 결과에 대한 신뢰도가 떨어집니다.


FSEventer를 꽤 여러 번 사용하여 응용 프로그램이 액세스하는 것을 확인했습니다. 실험실 배포를위한 시스템 이미 징용 라이센스 파일을 찾을 때 유용합니다.
Digitalchild

fseventer는 실시간으로 큰 사진을 찍는 데 탁월합니다.
ling

1
FSeventer가 종료되었으므로 FSMonitor를 사용해 볼 수도 있습니다 .
GDP2

10

/Applications/Utilities폴더 에서 활동 모니터를 언급 한 사람이 없습니다 .

목록에서 프로세스 이름을 클릭 한 다음 툴바에서 "검사"버튼을 누르십시오.

결과 창에서 세 개의 탭이 있습니다 Memory, Statistics, Open Files and Ports. 이 Open Files and Ports탭에는 프로세스에서 사용중인 모든 열린 파일이 표시됩니다.


1
알 수없는 응용 프로그램에서 파일에 액세스하는 경우 작동하지 않습니다
liquidblueocean

3

lsof

Terminal.app의 명령이 당신을 위해 그것을 할 수 있습니까? 를 사용하여 man lsof따라 잡으십시오. 건배


3

가장 빠른 방법은 다음과 같습니다.

$ lsof [path_to_file]

이 솔루션에는 루트 암호가 필요하지 않으며 다음과 같은 명확한 결과를 제공합니다.

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
Finder     497  JR7   21r   REG    1,2   246223 33241712 image.jpg
QuickLook 1007  JR7  txt    REG    1,2   246223 33241712 image.jpg

1

또한 사용할 수 있습니다 iosnoopiotop사용자의 특정 요구에 따라. 이러한 터미널 명령을 통해 grep특정 프로세스 또는 특정 파일에 대한 파일 시스템 이벤트를 감시 할 수 있습니다 .


0

lsof정보 를 입력 하는 그래픽 인터페이스가 있습니다. HAMSoft의 기부금이며 What ' s Keep Me 이라고 합니다. "휴지통에서 이것을 삭제할 수없는 이유는 무엇입니까?" OS X에서 자주 발생하는 질문은 진행중인 프로세스에 대해 궁금한 점이 있으면 실행중인 프로세스에서 열린 I / O 핸들을 보는 편리한 방법입니다. 간단한 검색 및 필터링이 가능합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.