(6 jawaban)
Tutup 4 tahun yang lalu.
Diberikan jalur file, bagaimana saya bisa menentukan proses mana yang membuatnya (dan/atau membaca/menulisnya)?
Jawaban yang Diterima:
lsof perintah (sudah disebutkan dalam beberapa jawaban) akan memberi tahu Anda proses apa yang membuka file saat Anda menjalankannya. lsof
tersedia untuk hampir semua varian unix.
lsof /path/to/file
lsof
tidak akan memberi tahu Anda tentang file yang dibuka dua mikrodetik yang lalu dan ditutup satu mikrodetik yang lalu. Jika Anda perlu melihat file tertentu dan bereaksi saat diakses, Anda memerlukan alat yang berbeda.
Jika Anda dapat merencanakan sedikit sebelumnya, Anda dapat meletakkan file di LoggedFS berkas sistem. LoggedFS adalah sistem file bertumpuk FUSE yang mencatat semua akses ke file dalam hierarki. Parameter logging sangat dapat dikonfigurasi. FUSE tersedia di semua unice utama. Anda ingin mencatat akses ke direktori tempat file dibuat. Mulailah dengan contoh file konfigurasi yang disediakan dan sesuaikan dengan panduan ini.
loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file
Banyak serikat pekerja menawarkan fasilitas pemantauan lainnya. Di Linux, Anda dapat menggunakan subsistem audit yang relatif baru. Tidak banyak literatur tentang itu (tetapi lebih dari tentang logfs); Anda dapat memulai dengan tutorial ini atau beberapa contoh atau hanya dengan auditctl
halaman manual. Di sini, itu harus cukup untuk memastikan daemon dimulai, lalu jalankan auditctl
:
auditctl -w /path/to/file
(Saya pikir sistem yang lebih lama membutuhkan auditctl -a exit,always -w /path/to/file
) dan lihat log di /var/log/audit/audit.log
.