Linux 용 SysInternals FileMon과 동일합니까?


13

우분투에서 응용 프로그램을 디버깅하려고합니다-존재하지 않는 파일의 경우에도 파일 열기 시도를 청취해야합니다.

프로세스 모니터 (이전의 FileMon )는 Windows에서 사용할 수 있습니다. Ubuntu의 유틸리티 벨트에는 무엇이 있습니까?

감사!

애슐리

답변:


7

당신은 strace를 찾고 있습니다. 여기를보십시오 : https://wiki.ubuntu.com/Strace


2
내가 알기로, filemon을 실행하면 사용자가 모든 파일 액세스를 볼 수 있습니다. 반면에 strace를 사용하려면 먼저 열 앱을 지정해야합니다. 이를 위해서는 해당 파일에 액세스하는 앱을 미리 알고 있어야합니다. 보고 싶은 파일에 어떤 앱이 액세스하는지 모르는 경우 어떻게해야합니까?
chuacw

8

그것은 당신이 원하는 것에 달려 있습니다 :

  • 대체로 inotify 를보고 프로세스가 수행하는 모든 파일 액세스를 확인 하려고합니다 .

  • 작은 strace에서는 특정 프로세스가 수행하는 syscall을 볼 수 있습니다. Strace는 매우 훌륭합니다. 예를 들어 프로세스를 통해 '열기'에 strace -f -eopen $cmd대한 호출을 추적 할 수 있습니다 . man 페이지는 물론 구문에 대한 자세한 내용을 가지고 있습니다.


고마워 pjz. 매우 구체적으로 말하면-우분투에서 Ogre3d를 시작하는 데 문제가 있습니다. 테스트 응용 프로그램이 시작하는 동안 일부 .cfg 파일을 찾고있는 것 같습니다. 올바른 파일을 사용할 수 있고 올바른 권한을 가질 수 있도록 파일을 열려는 모든 시도를 듣고 싶습니다.
chickeninabiscuit

strace -e open ./app
Justin

2

strace시작 응용 프로그램 앞에는 응용 프로그램이 수행하는 작업을 보는 것이 좋습니다.
lsof이미 실행중인 앱이 사용중인 파일을 확인하는 것이 좋습니다.

BTW :
lsof -ni:22 포트 22를 사용중인 프로세스를 표시합니다.



1

다음은 strace를 사용하여 파일 변경 사항을 추적하는 예입니다.

strace -f -e trace=file -p7546 -o /tmp/outputfile

-f하위 프로세스의 이벤트가 캡처되도록합니다.
-e trace=file(예를 들어 우리가 파일 관련 시스템 콜을 캡처해야한다고 말한다 stat, open, futex등)
-p(에서 검색 프로세스 ID되고 ps -aux다른 수단 또는) -o출력 파일을 지정 (가 많은 데이터 일 수 있으며 대신 필터로 그렙 사용할 수 있습니다.


1

sysdig를 사용해보십시오 . 예를 들면 다음과 같습니다.

sysdig -A -c echo_fds



0

이것은 오래되었지만 오늘날의 현실을 위해 업데이트하는 것이 좋습니다.

하나의 프로세스와 해당 하위 항목 만 디버그하는 경우 strace가 여전히 최선의 방법입니다. 누락 된 파일에서도 모든 파일 액세스를 쉽게 표시 할 수 있습니다.

일반적인 시스템 디버그의 경우 커널의 감사 기능이이를 수행 할 수 있으며 권장되는 방법입니다. 최신 커널에는 패치가 필요하지 않으며 설치된 감사 패키지 만

여기에 사용하기위한 간단한 GUI가 있습니다.

감사 GUI

이것은 Windows filemon을 복제하여 모든 장소, 프로세스 등에 대한 파일 액세스를 모니터링합니다.

이 게시물 도 확인하십시오


0

이것은 나를 위해 잘 작동했습니다 (Linux Mint 19.1) :

sudo lsof 2>&1 | grep programnamehere

2>&1필요한지 잘 모르겠지만 사용하지 않으면 필터링하지 않았습니다.

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