วิธีตรวจสอบไฟล์ที่เปิดอยู่


9

มีเครื่องมือในการตรวจสอบว่ากระบวนการใดเปิดไฟล์ใดในระบบเพื่อให้คุณสามารถติดตามกระบวนการที่คอยจับตาดูไฟล์เฉพาะได้หรือไม่?

Lsof สามารถค้นหาว่าคุณเรียกใช้ในขณะที่กระบวนการเปิดไฟล์หรือไม่ แต่ถ้าเป็นกระบวนการแบบสั้น ๆ ที่เรียกใช้ทุกครั้งคุณจะไม่สามารถจับได้ด้วย lsof ต้องการบางสิ่งที่ใช้การติดตามเคอร์เนล


คุณเช็คเอาต์เป็นคนจริงหรือไม่? ดูคำตอบของ @ Kees ได้ที่นี่เช่น: askubuntu.com/questions/25442/… มีลิงก์อยู่สองสามคำตอบของฉันที่นี่: askubuntu.com/questions/29566/…
belacqua

@jgbelacua ไม่ว่าจะเป็นสิ่งที่ฉันกำลังมองหา Inotify สามารถบอกคุณได้เมื่อไฟล์ที่กำหนดถูกสัมผัสและ lsof สามารถบอกคุณได้ว่าไฟล์ใดที่กระบวนการเปิดหรือกระบวนการที่เปิดไฟล์ แต่ฉันต้องคิดว่ากระบวนการใดที่ทำให้แตะไฟล์ก่อนแล้วจึงปิดได้ก่อน ใช้ lsof เพื่อจับมัน
psusi

ที่เกี่ยวข้อง: askubuntu.com/questions/24512/…
ændrük

คำตอบ:


7

คุณอาจจะใช้ระบบการตรวจสอบสำหรับสิ่งนั้น มันเป็นเฮฟวี่เวทเล็ก ๆ น้อย ๆ แต่สิ่งนี้ควรจะใช้ได้ (ใน /etc/audit/audit.rules):

# delete all other rules
-D

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

และฉันคิดว่าคุณต้องรีสตาร์ท auditd:

sudo service audit restart

(ในกรณีที่คุณไม่ได้ติดตั้งมันอยู่ในแพ็คเกจ auditd.) ผู้ร้ายสามารถพบได้ใน /var/log/audit/audit.log


ที่สมบูรณ์แบบ! นั่นคือสิ่งที่ฉันกำลังมองหา
psusi

0

น่าเสียดายที่กลไกที่ Linux ใช้เพื่ออนุญาตให้หนึ่งไฟล์ในการตรวจสอบนั้นไม่ได้ให้ข้อมูลซึ่งไม่ได้ให้ข้อมูลเพียงพอที่จะดึงข้อมูลที่เป็นประโยชน์: คุณจะได้รับชื่อไฟล์และการกระทำที่ทำ

ฉันได้ลองใช้สิ่งนี้:

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

สิ่งนี้จะรับฟังเหตุการณ์ที่เกิดขึ้นในไดเรกทอรีที่ระบุและสำหรับแต่ละเหตุการณ์ที่มันทำงาน lsof เพื่อพยายามที่จะจับกระบวนการที่สัมผัสกับไฟล์ น่าเสียดายสำหรับการเข้าถึงส่วนใหญ่ที่ฉันทดสอบ (เช่นการใช้โปรแกรมแก้ไขเพื่อเขียนไปยังไฟล์) คำสั่ง LSOF นั้นทำงานช้าและไม่จัดการกระบวนการที่ผิดพลาด

หากกระบวนการของคุณทำ IO อย่างเข้มข้นมากขึ้นในไฟล์ที่มีปัญหาระยะของคุณอาจแตกต่างกันไป โชคดี.


0

fnotifystat เป็นเครื่องมือที่ได้รับการออกแบบมาเพื่อดูกิจกรรมของไฟล์ linux

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

แสดงไฟล์ที่ใช้งาน 10 อันดับแรกทุก ๆ 60 วินาทีจนกระทั่งหยุด:

sudo fnotifystat -t 10 60

แสดงความเป็นไฟล์ทุก 10 วินาทีเพียง 6 ครั้ง:

sudo fnotifystat 10 6

แสดงกิจกรรมไฟล์ของธันเดอร์เบิร์ดและกระบวนการ ID 1827:

sudo fnotifystat -p thunderbird,1827

แสดงเหตุการณ์แจ้งเตือนทุกไฟล์และไฟล์กิจกรรมที่ใช้งาน 20 อันดับแรกในช่วงเวลาเดียว 5 นาที:

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

เพียงแสดงทุกไฟล์แจ้งเตือนเหตุการณ์ใน / sys และ / proc และไม่มีสถิติเป็นระยะ:

sudo fnotifystat -n -i /sys,/proc

ศึกษา fnotifystat man page สำหรับข้อมูลเพิ่มเติมมันเป็นเครื่องมือที่มีความยืดหยุ่น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.