어떤 프로세스가 특정 파일을 계속 터치하는지 추적 할 수 있도록 시스템에서 어떤 파일을 여는 프로세스를 모니터링하는 도구가 있습니까?
프로세스가 파일을 연 상태에서 Lsof가 실행되는지 확인할 수 있지만, 가끔씩 실행되는 수명이 짧은 프로세스 인 경우 lsof로이를 포착 할 수 없습니다. 커널 추적을 사용하는 것이 필요합니다.
어떤 프로세스가 특정 파일을 계속 터치하는지 추적 할 수 있도록 시스템에서 어떤 파일을 여는 프로세스를 모니터링하는 도구가 있습니까?
프로세스가 파일을 연 상태에서 Lsof가 실행되는지 확인할 수 있지만, 가끔씩 실행되는 수명이 짧은 프로세스 인 경우 lsof로이를 포착 할 수 없습니다. 커널 추적을 사용하는 것이 필요합니다.
답변:
아마도 감사 시스템을 사용할 수도 있습니다. 약간 헤비급이지만 다음과 같이 작동합니다 (/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에서 범인을 찾을 수 있습니다.
불행히도 리눅스가 파일을 모니터하기 위해 사용하는 메커니즘은 불완전하며, 유용한 데이터를 추출하기에 충분한 정보를 제공하지 않습니다. 파일 이름과 수행 한 작업 만 가져옵니다.
나는 이와 같은 것을 사용하려고 노력했다.
sudo inotifywait -mr somedir --format "%w%f" | while read file; do echo -n "$file => ";lsof -b $file; echo ""; done
지정된 디렉토리에서 이벤트를 inotify하고 lsof를 실행하여 파일을 터치하는 프로세스를 포착하려고 시도합니다. 불행히도 필자가 테스트 한 대부분의 액세스 (예 : 편집기를 사용하여 파일에 쓰기)의 경우 LSOF 명령은 느리고 속도가 느린 프로세스를 잡을 수 없습니다.
프로세스가 문제가있는 파일에서보다 집중적 인 IO를 수행하는 경우 마일리지가 다를 수 있습니다. 행운을 빕니다.
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 매뉴얼 페이지를 참조하십시오.이 도구는 매우 유연한 도구입니다.