Secara terus-menerus memonitor file yang dibuka / diakses oleh suatu proses


25

lsof -p 12345 akan mendaftar semua file yang dibuka oleh proses yang pid adalah 12345 tetapi hanya untuk waktu tertentu.

Bagaimana kita bisa terus memantau proses dari awal hingga akhir (sampai proses dihentikan) untuk membuat daftar / menampilkan setiap file yang diakses oleh proses selama masa pakainya?


Jawaban:


31

Coba dengan strace -p 12345; itu harus melakukan apa yang ingin Anda capai.

Outputnya dapat difilter untuk hanya menampilkan file yang dibuka ( komentar Dan D. ):

strace -e open -p 12345

Catatan: Anda juga dapat melacak proses yang berjalan dengan cepat strace -e open <command>.


output tidak ramah dan terlalu banyak hal tambahan.
MA1

Anda dapat memperbaikinya dengan memipihkan - strace -p {pid} | grep -i "Open" | tee files_opened.log. Kuncinya adalah grep, yang memungkinkan Anda memfilter output untuk panggilan sistem yang Anda inginkan (misalnya open()).

11
@Ninefingers Sebenarnya stracebisa melakukan itu lebih baik daripada grepdengan -eopsi:strace -e open
Dan D.

@DanD oh yeah, ofc :)

Ketika saya membunuh perintah strace, itu juga membunuh hal yang dilacaknya. Mengapa ini terjadi (cygwin)?
CMCDragonkai


3

Ini akan mengulang menjalankan perintah Anda dan membersihkan layar setiap kali:

watch "lsof -p 12345"

PERINGATAN: ini akan kehilangan akses file cepat dan hanya cocok untuk melihat file lama


2
Ini agak canggung dibandingkan dengan menggunakan jawaban lain strace.
David Foerster

1
Itu solusi yang tidak akurat - suatu proses dapat menggunakan file di antara eksekusilsof
Dor

@Atau Anda dapat mengatur waktu lsof ke sub 1 detik dan meningkatkan presisi. Meskipun canggung dibandingkan dengan yang lain, Anda salah karena ini adalah solusi yang tidak akurat.
Jordon Bedwell

Jika Anda melihat operasi file yang panjang (seperti cadangan database) ini mungkin merupakan alternatif sederhana yang bagus.
jcalfee314
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.