Setara dengan SysInternals FileMon untuk Linux?

13

Saya mencoba men-debug aplikasi di Ubuntu - Saya perlu mendengarkan upaya membuka file (bahkan untuk file yang tidak ada).

Process Monitor (sebelumnya dikenal sebagai FileMon ) tersedia di Windows - apa yang ada di sabuk utilitas Ubuntu?

Terima kasih!

Ashley

chickeninabiscuit
sumber

Jawaban:

7

Anda sedang mencari strace. Lihat di sini: https://wiki.ubuntu.com/Strace

Evan Anderson
sumber
2
Seperti yang saya pahami, menjalankan filemon memungkinkan pengguna untuk melihat semua akses file. strace di sisi lain, mengharuskan Anda untuk menentukan aplikasi mana yang akan dibuka terlebih dahulu. Ini mengharuskan Anda untuk mengetahui sebelumnya, aplikasi yang mengakses file-file itu. Bagaimana jika Anda tidak tahu aplikasi mana yang mengakses file-file yang Anda tertarik melihatnya?
chuacw
8

Itu tergantung pada apa yang Anda inginkan:

  • Secara umum, Anda ingin melihat inotify untuk melihat semua akses file yang dibuat oleh proses apa pun.

  • Dalam yang kecil, strace akan membiarkan Anda menonton syscalls proses tertentu. Strace sangat mengagumkan. Anda dapat melacak panggilan proses untuk 'membuka' dengan melakukan strace -f -eopen $cmd, misalnya. The halaman manual memiliki rincian lengkap tentang sintaks, tentu saja.

pjz
sumber
Terima kasih pjz. Untuk lebih spesifik - saya mengalami beberapa kesulitan untuk memulai dengan Ogre3d di Ubuntu. Aplikasi pengujian saya tampaknya mencari beberapa file .cfg saat start-up. Saya ingin mendengarkan semua upaya untuk membuka file sehingga saya dapat memastikan file yang benar tersedia dan memiliki izin yang benar.
chickeninabiscuit
strace -e open ./app
Justin
2

stracedi depan aplikasi awal adalah baik untuk menonton apa yang sedang dilakukan aplikasi.
lsofsenang melihat file mana yang menggunakan aplikasi yang sudah berjalan.

BTW:
lsof -ni:22 menunjukkan proses mana yang menggunakan Port 22.

ThorstenS
sumber
2

SGI memiliki alat yang mungkin ingin Anda coba: http://oss.sgi.com/projects/fam/

pengguna10103
sumber
2
di bawah linux fam adalah sejarah. Benar-benar menggunakan inotify saat ini
ThorstenS
1

Berikut adalah contoh penggunaan strace untuk melacak perubahan file:

strace -f -e trace=file -p7546 -o /tmp/outputfile

-fmemastikan bahwa peristiwa dari proses anak ditangkap.
-e trace=filemengatakan bahwa kita harus menangkap terkait berkas syscalls (misalnya stat, open, futexdll)
-padalah proses ID (diambil dari ps -auxatau cara lain) -oyang ditentukan outputfile yang (mungkin ada banyak data dan Anda malah bisa menggunakan grep sebagai filter.

tungguinrain
sumber
1

Coba sysdig . Sebagai contoh:

sysdig -A -c echo_fds

Kaos
sumber
0

Ini sudah tua, tapi saya pikir itu ide yang bagus untuk memperbaruinya untuk kenyataan hari ini.

Untuk debug hanya satu proses dan anak-anak mereka, strace masih menjadi cara terbaik. Itu dapat dengan mudah menunjukkan semua akses file, bahkan pada file yang hilang.

Untuk debug sistem generik, fitur audit dalam kernel dapat melakukan itu dan merupakan cara yang disarankan. Tidak perlu patch pada kernel terbaru, hanya paket audit yang diinstal

di sini adalah gui sederhana untuk menggunakannya:

audit-gui

Ini mereplikasi filemon windows, memonitor akses file untuk semua tempat, proses, dll

periksa juga posting ini

higuita
sumber
0

Inilah yang bekerja dengan baik untuk saya (Linux Mint 19.1):

sudo lsof 2>&1 | grep programnamehere

Tidak yakin mengapa 2>&1diperlukan, tetapi tidak disaring kecuali saya menggunakannya.

Andrew
sumber