memonitor perubahan file + memproses akses ke file

19

Saya ingin melihat apa yang terjadi di folder server aplikasi saya, yaitu file mana yang diubah oleh proses x atau *.warfile mana yang telah diubah (diganti / dibuat) dalam x menit terakhir.

Apakah ada alat di Linux untuk membantu ini?

Martin V.
sumber
Halo, coba lihat panduan ini untuk mengatur auditd untuk memantau direktori dan file xmodulo.com/how-to-monitor-file-access-on-linux.html
Sifungurux
1
Saya mendapatkan pertanyaan ini melalui pencarian Google, tetapi saya menemukan jawaban saya di sini: unix.stackexchange.com/questions/18844/…
Quentin Skousen
Lihatlah SystemTap. uselessuseofcat.com/?p=281
steve

Jawaban:

9

Bergantung pada kebutuhan Anda yang sebenarnya, Anda mungkin ingin melihat solusi inotify dan / atau FAM / GAMIN .

peterph
sumber
14

Strace (seperti diuraikan di atas) adalah salah satu cara untuk memeriksa tindakan dari perangkat lunak yang berjalan yang ditentukan.

Beberapa perintah seperti watch find dir/ -mmin 1juga dapat membantu memeriksa perubahan pada menit terakhir di beberapa direktori.

Bergantung pada apa yang sebenarnya Anda cari, alat yang tidak sah mungkin merupakan alat perdagangan lain di sini.

Misalnya, inotifywait -mr dir/memonitor perubahan dalam direktori yang diberikan dan langsung memberi Anda umpan balik dari aplikasi apa pun yang mencoba membuka / membaca / menulis / menutup file. Namun, inotify tidak memberi Anda umpan balik mengenai aplikasi atau proses mana yang mengakses file - itu adalah sesuatu yang dilakukan strace.

Harap ketahui bahwa pemantauan tingkat sistem biasanya terbatas digunakan untuk perangkat lunak java yang berjalan di beberapa lingkungan wadah aplikasi, karena Anda hanya melihat wadah (mis. Tomcat), tetapi bukan aplikasi sebenarnya (mis. Perang)) berinteraksi dengan sistem.

knoepfchendruecker
sumber
8

Anda dapat memperoleh informasi tentang file mana yang diakses oleh proses oleh lsof :

 lsof -n -p `pidof your_app`

Dan sebaliknya, Anda bisa mendapatkan pid dari proses yang menulis / membaca ke beberapa file:

 lsof -n -t file
trankvilezator
sumber
6

Anda dapat menggunakan straceuntuk memonitor semua panggilan sistem dari suatu proses, yang mencakup semua akses file.

Saat memulai program:

$ strace ./myserver

Anda juga dapat melampirkan strace ke proses yang berjalan melalui PID itu:

$ ps aux | grep myserver
me      1859  0.0  0.0  25288   424 ?        Ss   Sep02   0:00 myserver
$ strace -p 1859
umläute
sumber
akan bagus untuk memantau juga dengan folder bukan oleh PID, terima kasih. btw strace -p PID bekerja untuk saya di Ubuntu.
Martin V.
0

watch find dir/ -mmin 1 tidak bekerja untuk saya, yang dilakukan hanyalah menyalin dan berbeda:

cp -r dir /tmp/olddir
# initialize/whatever
diff -r dir /tmp/olddir

Ini cukup banyak sumber daya, tetapi ini menunjukkan semua perubahan antara foto dan diffwaktu.

serv-inc
sumber