it-swarm-tr.com

Hangi işlemin dosya oluşturduğunu nasıl belirleyebilirim?

Dosya yolu verildiğinde, hangi işlemin onu oluşturduğunu (ve/veya okur/yazar) nasıl belirleyebilirim?

67
Anton Barkovsky

lsof komutu (birkaç cevapta zaten belirtilmiştir), çalıştırdığınız sırada hangi işlemin bir dosyayı açık olduğunu size söyleyecektir . lsof hemen hemen her unix varyantı için kullanılabilir.

lsof /path/to/file

lsof size iki mikrosaniye önce açılan ve bir mikrosaniye önce kapatılan dosya hakkında bilgi vermez. Belirli bir dosyayı izlemeniz ve dosyaya erişildiğinde tepki vermeniz gerekiyorsa, farklı araçlara ihtiyacınız vardır.

Biraz önceden planlayabiliyorsanız, dosyayı LoggedFS dosya sistemine koyabilirsiniz. LoggedFS, bir hiyerarşideki dosyalara tüm erişimi günlüğe kaydeden bir Fuse yığın dosya sistemidir. Günlük parametreleri oldukça yapılandırılabilir. Sigorta tüm büyük birleşimler adresinde mevcuttur. Dosyanın oluşturulduğu dizine erişimleri günlüğe kaydetmek istersiniz. Sağlanan örnek yapılandırma dosyasıyla başlayın ve bu kılavuz 'a göre ayarlayın.

loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file

Birçok unice başka izleme olanakları sunar. Linux altında, nispeten yeni denetim alt sistemi kullanabilirsiniz. Bu konuda çok fazla literatür yoktur (ancak logf'lardan daha fazlası); bu öğretici veya aazörnekler ile veya sadece auditctl adam sayfası . Burada, arka plan programının başlatıldığından emin olmak için yeterli olmalı, ardından auditctl:

auditctl -w /path/to/file

(Sanırım eski sistemler auditctl -a exit,always -w /path/to/file) ve /var/log/audit/audit.log.

Peki lsof'yi tekrar tekrar çalıştırabilirsiniz ve eğer şanslıysanız suçlu dosyayı göstermesi için yeterince uzun açık tutacaktır. yani .:

$ lsof -r1 /path/to/file

veya birçok dosya için

$ lsof -r1 /path/to/folder/*

Bu, verilen yola tüm erişimi saniyede bir kez belirli bir zamanda listeler. Bu, dosyaya erişen işlemin PID'sinin listelenmesini içerir.

Bu işe yaramazsa, yani dosya çok hızlı bir şekilde açılır ve kapanır, bu genellikle böyledir, daha ayrıntılı araçlar aramanız gerektiğine inanıyorum. Belki logffs bir şey olabilir mi?

Hackland
Saniyede bir kez lsof işe yaramazsa, elbette lsof'u tekrar tekrar mümkün olduğunca hızlı çalıştıran bir while döngüsü hackleyebilirsiniz. Sevmek:

$ while true; do lsof /paht/to/file; done;

Güzel değil, ama kim bilir, sadece yapabilir.

11
0scar

Bunun için lsof kullanabilirsiniz:

$ lsof /tmp/file
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
less      4737 wena    4r   REG    8,6    90700 1643536 /tmp/file

less isimli işlemin "/ tmp/file" dosyasını açık tutmak olduğunu söylüyor.

NOTE : Garip bir şekilde, geany veya nano kullanırsam işe yaramaz. Daha iyi öneriler için sabırsızlanıyorum.

1
tshepang

Chrome tarafından kullanılan dosyaları bulmak için ls ve grep kullanabilirsiniz

$ ls -l /proc/*/fd | grep "chrome"
lrwx------ 1 ba abc 64 Jul 16 22:19 104 -> /home/abc/.config/google-chrome/Default/Cookies
lr-x------ 1 abc abc 64 Jul 16 22:19 113 -> /opt/google/chrome/nacl_irt_x86_64.nexe
lrwx------ 1 abc abc 64 Jul 16 22:19 121 -> /home/abc/.cache/google-chrome/Default/Cache/data_0
lrwx------ 1 abc abc 64 Jul 16 22:19 122 -> /home/abc/.cache/google-chrome/Default/Cache/data_1
lrwx------ 1 abc abc 64 Jul 16 22:19 123 -> /home/abc/.cache/google-chrome/Default/Cache/data_2
lr-x------ 1 abc abc 64 Jul 16 22:19 125 -> /home/abc/.config/google-chrome/Dictionaries/en-US-3-0.bdic

Başka bir yol lsof ve grep kullanmaktır

$ lsof | grep "chrome"
chrome     2204       abc  cwd       DIR                8,5     4096 1441794 /home/abc
chrome     2204       abc  rtd       DIR                8,5     4096       2 /
chrome     2204       abc  txt       REG                8,5 87345336 5111885 /opt/google/chrome/chrome
chrome     2204       abc  mem       REG                8,5  4202496 1443927 /home/abc/.cache/google-chrome/Default/Media Cache/data_3
chrome     2204       abc  mem       REG                8,5  1056768 1443926 /home/abc/.cache/google-chrome/Default/Media Cache/data_2
chrome     2204       abc  mem       REG                8,5   270336 1443925 /home/abc/.cache/google-chrome/Default/Media Cache/data_1
chrome     2204       abc  mem       REG                8,5    45056 1443924 /home/abc/.cache/google-chrome/Default/Media Cache/data_0
0
SRINIVAS KATLA
lsof |grep (filename)

Bu, dosyayı kullanmakta olduğunuz işlemi gösterir.

0
Matthew