열린 파일을 모니터링하는 방법


9

어떤 프로세스가 특정 파일을 계속 터치하는지 추적 할 수 있도록 시스템에서 어떤 파일을 여는 프로세스를 모니터링하는 도구가 있습니까?

프로세스가 파일을 연 상태에서 Lsof가 실행되는지 확인할 수 있지만, 가끔씩 실행되는 수명이 짧은 프로세스 인 경우 lsof로이를 포착 할 수 없습니다. 커널 추적을 사용하는 것이 필요합니다.


inotify를 체크 아웃 했습니까? 여기 @Kees 의 답변을 참조 하십시오 : askubuntu.com/questions/25442/…
belacqua

@jgbelacua 그중 어느 것도 내가 찾고있는 것이 아닙니다. Inotify는 주어진 파일을 만질 때 알려줄 수 있고 lsof는 프로세스가 어떤 파일을 열 었는지 또는 어떤 프로세스가 파일을 열어 놓았는지 알려줄 수 있지만, 어떤 프로세스가 파일을 계속 터치 한 다음 닫을 수 있는지 확인해야합니다. 그것을 잡기 위해 lsof를 실행하십시오.
psusi

답변:


7

아마도 감사 시스템을 사용할 수도 있습니다. 약간 헤비급이지만 다음과 같이 작동합니다 (/etc/audit/audit.rules에서).

# delete all other rules
-D

# watch the file in question
-w /path/to/file -p rwxa

그런 다음 감사를 다시 시작해야한다고 생각합니다.

sudo service audit restart

(설치되어 있지 않은 경우 패키지 감사 상태입니다.) 그런 다음 /var/log/audit/audit.log에서 범인을 찾을 수 있습니다.


완전한! 바로 내가 찾던 것입니다.
psusi

0

불행히도 리눅스가 파일을 모니터하기 위해 사용하는 메커니즘은 불완전하며, 유용한 데이터를 추출하기에 충분한 정보를 제공하지 않습니다. 파일 이름과 수행 한 작업 만 가져옵니다.

나는 이와 같은 것을 사용하려고 노력했다.

sudo inotifywait -mr somedir --format "%w%f" | while read file; do echo -n "$file => ";lsof -b $file; echo ""; done

지정된 디렉토리에서 이벤트를 inotify하고 lsof를 실행하여 파일을 터치하는 프로세스를 포착하려고 시도합니다. 불행히도 필자가 테스트 한 대부분의 액세스 (예 : 편집기를 사용하여 파일에 쓰기)의 경우 LSOF 명령은 느리고 속도가 느린 프로세스를 잡을 수 없습니다.

프로세스가 문제가있는 파일에서보다 집중적 인 IO를 수행하는 경우 마일리지가 다를 수 있습니다. 행운을 빕니다.


0

fnotifystat는 리눅스 파일 활동을 감시하도록 설계된 도구입니다

sudo apt-get install fnotifystat
sudo fnotifystat
Total   Open  Close   Read  Write   PID  Process         Pathname
  7.0    1.0    1.0    5.0    0.0   2075 libvirtd        /proc/cpuinfo
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/physical_package_id
  6.0    2.0    2.0    2.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/physical_package_id
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node
  4.0    1.0    1.0    2.0    0.0   2075 libvirtd        /sys/devices/system/node/node0
  4.0    2.0    2.0    0.0    0.0  15313 gnome-calendar  /usr/share/zoneinfo/Europe/London
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu0/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu1/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu2/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/core_id
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/cpu3/topology/thread_siblings_list
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/online
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/cpu/present
  3.0    1.0    1.0    1.0    0.0   2075 libvirtd        /sys/devices/system/node/node0/meminfo
  2.0    0.0    0.0    0.0    2.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-release.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-desktop.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-devel.log
  1.0    0.0    0.0    0.0    1.0  12174 xchat           /home/cking/.xchat2/xchatlogs/FreeNode-#ubuntu-kernel.log

중지 될 때까지 60 초마다 상위 10 개의 활성 파일을 표시하십시오.

sudo fnotifystat -t 10 60

10 초마다 6 번만 파일 활동 표시 :

sudo fnotifystat 10 6

썬더 버드 및 프로세스 ID 1827의 파일 활동 표시 :

sudo fnotifystat -p thunderbird,1827

5 분의 단일 기간 동안 모든 파일 알림 이벤트 및 상위 20 개의 활성 활동 파일을 표시하십시오.

sudo sudo notifystat -v -d -c 5m 1

모든 파일 알림 이벤트를 / sys 및 / proc에 표시하고 정기적 통계는 표시하지 마십시오.

sudo fnotifystat -n -i /sys,/proc

자세한 내용은 fnotifystat 매뉴얼 페이지를 참조하십시오.이 도구는 매우 유연한 도구입니다.

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