파일 변경 사항 모니터링 + 파일 액세스 처리

파일 변경 사항 모니터링 + 파일 액세스 처리

내 응용 프로그램 서버 폴더에서 무슨 일이 일어나고 있는지, 즉 프로세스 x에 의해 어떤 파일이 변경되었는지 또는 *.war지난 x분 동안 어떤 파일이 변경(교체/생성)되었는지 확인하고 싶습니다.

이 문제를 해결하는 데 도움이 되는 도구가 Linux에 있습니까?

답변1

위에서 설명한 Strace는 실행 중인 특정 소프트웨어의 작동을 검사하는 방법입니다.

특정 명령은 watch find dir/ -mmin 1지난 몇 분 동안 특정 디렉터리의 변경 사항을 확인하는 데 유용할 수도 있습니다.

정확히 무엇을 찾고 있는지에 따라 다릅니다.이노티파이 도구여기서 거래의 또 다른 도구가 될 수도 있습니다.

예를 들어 inotifywait -mr dir/특정 디렉터리의 변경 사항을 모니터링하고 파일 열기/읽기/쓰기/닫기를 시도하는 모든 애플리케이션에 대한 즉각적인 피드백을 제공합니다. 그러나 inotify는 어떤 응용 프로그램이나 프로세스가 파일에 액세스하고 있는지에 대한 피드백을 제공하지 않습니다. 이것이 strace가 하는 일입니다.

시스템 수준 모니터링은 일부 애플리케이션 컨테이너 환경에서 실행되는 Java 소프트웨어에 대해 제한적으로 사용되는 경우가 많습니다. 컨테이너(예: Tomcat)만 볼 수 있고 시스템과 상호 작용하는 실제 애플리케이션(예: war)은 볼 수 없기 때문입니다.

답변2

특정 요구 사항에 따라 조사해 볼 수도 있습니다.inotify그리고/또는/게임해결책.

답변3

프로세스가 액세스하는 파일에 대한 정보를 얻을 수 있습니다.라소프:

 lsof -n -p `pidof your_app`

반대로 특정 파일을 쓰거나 읽는 프로세스의 PID를 얻을 수 있습니다.

 lsof -n -t file

답변4

watch find dir/ -mmin 1나에게는 작동하지 않습니다. 복사하고 비교하는 것뿐입니다.

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

상당히 리소스 집약적이지만 diff스냅샷과 시간 사이의 모든 변경 사항을 보여줍니다.

관련 정보