Cari tahu proses mana yang sedang menulis ke direktori tertentu


19

Saya memiliki direktori / beberapa / dir, dan saya melihat bahwa file baru muncul di sana sepanjang waktu. Bagaimana cara mengetahui proses mana yang membuat file-file itu?

Jawaban:


18

Coba lsof +r2 | grep '/some/dir'. Ini akan menunjukkan proses mengakses / beberapa / dir dan menyegarkan setiap 2 detik.


2
Terima kasih, ini cukup dekat dengan yang saya butuhkan, karena ini menghasilkan seluruh daftar file yang terbuka terlebih dahulu, kemudian menyaring oleh / some / dir. Namun jika proses membuat file sangat cepat dan tidak membiarkannya tetap terbuka, saya mengerti bahwa di atas bahkan mungkin ada yang terlewatkan. Saya pikir dalam hal ini satu-satunya pilihan adalah subsistem audit, kan?
homer5439

Asumsi Anda benar. Gagasan lain adalah menggunakan inotifywait, lihat linux.die.net/man/1/inotifywait
weeheavy

terima kasih, saya telah mempertimbangkan alat tidak sah sebelumnya, namun saya menemukan bahwa mereka bekerja murni di tingkat filesystem dan tampaknya tidak dapat memberikan info tentang siapa yang melakukan apa.
homer5439

18

Gunakan auditsubsistem kernel

auditctl -w /some/dir/ -p war -k whatsgoingon

Yang mengatur kait menunggu sesuatu terjadi di bawah / some / dir /.

Kemudian pastikan Anda auditdmenjalankan daemon. Setelah itu tunggu saja sampai file muncul dan lihat dari /var/log/auditd.logatau di mana pun di sistem Anda tulis dan baca apa yang terjadi dan proses apa.


Terima kasih, ini sepertinya memang tepat, meskipun membutuhkan alat audit yang diinstal yang mungkin tidak ada di mana-mana secara default. Tapi ok, jika seseorang membutuhkan informasi itu, mereka selalu dapat diinstal.
homer5439

Sebagai catatan kepada orang-orang yang melihat ini: Anda tidak dapat menempatkan arloji di direktori tingkat atas (dilarang oleh kernel)
Tony Sepia

1
Itu benar-benar cara yang efisien! Terima kasih banyak!!! BTW, setelah selesai, Anda dapat menghapus semua kait untuk menghindari penulisan log audit selamanya auditctl -D. Anda dapat menggunakan auditctl -ldaftar semua kait.
Robert

0

lsof bisa membantu:

# lsof -r1 /some/dir/*

1
Terima kasih. Apakah benar bahwa perintah di atas hanya memberi tahu saya siapa yang mengakses file yang sudah ada tetapi tidak menunjukkan apa pun untuk file yang baru dibuat? Pemahaman saya adalah bahwa / some / dir / * memperluas ke daftar file yang ada pada saat perintah dipanggil.
homer5439
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.