파일 변경 모니터링 + 파일에 대한 프로세스 액세스


19

내 응용 프로그램 서버 폴더에서 발생하는 작업, 즉 프로세스 x에 의해 변경된 *.war파일 또는 마지막 x 분 동안 변경된 파일 (바꾸거나 생성 된 파일) 을보고 싶습니다 .

리눅스에 도움이되는 툴이 있습니까?


디렉토리와 파일을 모니터하기 위해 감사를 설정하기 위해이 안내서를 살펴보십시오 xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux

1
나는 구글 검색을 통해이 질문에 도착,하지만 난 여기에 내 대답을 발견 unix.stackexchange.com/questions/18844/...
쿠엔틴 Skousen을

SystemTap을 살펴보십시오. uselessuseofcat.com/?p=281
steve

답변:



14

Strace (위에서 설명)는 지정된 실행중인 소프트웨어의 동작을 확인하는 한 가지 방법입니다.

같은 일부 명령 watch find dir/ -mmin 1은 일부 디렉토리에서 지난 1 분의 변경 사항을 확인하는 데 도움이 될 수 있습니다.

정확히 당신이 찾고있는 것에 따라, inotify-tools 는 아마도 여기서 또 다른 거래 도구 일 것입니다.

예를 들어, inotifywait -mr dir/주어진 디렉토리에서 변경 사항을 모니터링하고 파일을 열고 / 읽고 / 쓰기 / 닫으려는 응용 프로그램에 대한 피드백을 즉시 제공합니다. 그러나 inotify는 어떤 응용 프로그램이나 프로세스가 파일에 액세스하고 있는지에 대한 피드백을 제공하지 않습니다. 이는 strace가 수행하는 작업입니다.

컨테이너 수준 (예 : Tomcat) 만 볼 수 있지만 실제 응용 프로그램 (예 : .war)은 시스템과 상호 작용하지 않으므로 시스템 수준 모니터링은 일반적으로 일부 응용 프로그램 컨테이너 환경에서 실행되는 Java 소프트웨어에 제한적으로 사용됩니다.


8

lsof를 통해 프로세스가 액세스 한 파일에 대한 정보를 얻을 수 있습니다 .

 lsof -n -p `pidof your_app`

그리고 그 반대의 경우, 일부 파일에 쓰거나 읽는 프로세스를 엿볼 수 있습니다.

 lsof -n -t file

6

strace모든 파일 액세스를 포함하여 프로세스의 모든 시스템 호출을 모니터 하는 데 사용할 수 있습니다 .

프로그램을 시작할 때 :

$ strace ./myserver

PID를 통해 실행중인 프로세스에 strace를 연결할 수도 있습니다.

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859

PID가 아닌 폴더별로 모니터링하는 것이 좋습니다. 감사합니다. btw strace -p PID는 우분투에서 작동합니다.
Martin V.

0

watch find dir/ -mmin 1 나를 위해 일하지 않았다, 단순히 복사하고 차이점은 무엇입니까?

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

리소스를 많이 사용하지만 스냅 샷과 diff시간 사이의 모든 변경 사항을 보여줍니다 .

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