Frage

Die fuser Befehl lässt mich wissen, welche Prozesse eine Datei oder ein Verzeichnis verwenden.

Ich suche Befehl, der das Gegenteil tut: lässt mich wissen, welche Dateien von einem Prozess verwendet werden

.

Update

vergessen zu erwähnen, dass es für ein Solaris-System ist.

War es hilfreich?

Lösung

Während ich würde niemand Dtrace gönne lernen oder Erfahrungen zu sammeln Software zu installieren, da in Solaris ist ein Befehl, um die Dateien ein Prozess zu sehen, hat geöffnet:      / Usr / bin / pfiles

% tail -f /etc/motd &
[1] 6033

% pfiles 6033
6033:   tail -f /etc/motd

      Current rlimit: 256 file descriptors
       0: S_IFREG mode:0644 dev:182,65538 ino:163065 uid:0 gid:3 size:54
          O_RDONLY|O_LARGEFILE
          /etc/motd
       1: S_IFCHR mode:0620 dev:299,0 ino:718837882 uid:101 gid:7 rdev:24,3
          O_RDWR|O_NOCTTY|O_LARGEFILE
          /dev/pts/3
       2: S_IFCHR mode:0620 dev:299,0 ino:718837882 uid:101 gid:7 rdev:24,3
          O_RDWR|O_NOCTTY|O_LARGEFILE
          /dev/pts/3

Andere Tipps

lsof -p <pid>

hier

  

Lsof steht für „ Liste Open Files “. Dieser Shell-Befehl scheint trügerisch einfach. Es wird Informationen zu Dateien, die von Prozessen auf einer UNIX-Box geöffnet

     

Trotz der (scheinbaren) bescheiden Leitbildes, lsof ist tatsächlich eines der leistungsfähigsten und nützliche UNIX-Befehlen. Seine rohe Kraft kommt von einer UNIX-Design-Prinzip oft beschrieben als „in UNIX Alles ist eine Datei“. Was dies bedeutet, ist, dass die lsof Konzept einer offenen Datei nicht nur reguläre Dateien umfasst, sondern auch die folgenden:

  • Verzeichnisse
  • Streams oder Netzwerkdateien (zum Beispiel Internet oder UNIX-Domain-Sockets und NFS-Dateien)
  • Native Bibliotheken (zB .soor .dylibdynamic Bibliotheken zu einem Prozess verknüpft)
  • Block und Zeichen spezielle Dateien (beispielsweise Datenträger, externe Festplatte, Konsole oder Maus)
  • Rohre

Warten Sie, ich kann nicht auf meinem System finden lsof!

  

lsof ist so ein beliebtes Tool, das es portiert wurde, um so ziemlich alle UNIX-Dialekte (Linux, Mac OS X, BSD, Solaris, und so weiter). Wenn es auf Ihrem System nicht verfügbar ist, verwenden Sie das System übliche Paketverwaltung zu installieren. Sie können sich auf Sun Freeware lsof Pakete für Solaris finden.

Dies ist eine klassische Anwendung für dtrace .

Ich kann die Syntax nicht genau erinnern, aber Sie können jedes Mal, wenn eine Datei, die eine Spur Feuer haben, ist von jedem Prozess auf dem System geöffnet. Es kann ohne annähernd so viel Aufwand auf einem laufenden System durchgeführt werden, wie ich es erwartet hätte. Wenn Sie solaris als Administrator ausführen, DTrace ist dein bester Freund. Auch wenn Sie kein Programmierer sind, dann ist es ganz einfach zu erlernen und ein sehr leistungsfähiges System-Abfrage-Tool.

Unter einigen Unix-Systemen (IE: Linux), alle von einem Prozess geöffneten Dateien haben eine FD-ID.

Diese können unter

gesehen werden

/ proc / $ PID / fd

ls -la /proc/2055/fd 
total 0
dr-x------ 2 kent kent  0 Nov 19 21:44 .
dr-xr-xr-x 7 kent kent  0 Nov 19 21:42 ..
lr-x------ 1 kent kent 64 Nov 19 21:44 0 -> /dev/null
l-wx------ 1 kent kent 64 Nov 19 21:44 1 -> /home/kent/.xsession-errors
lrwx------ 1 kent kent 64 Nov 19 21:44 10 -> socket:[3977613]
lrwx------ 1 kent kent 64 Nov 19 21:44 11 -> /home/kent/.googleearth/Cache/dbCache.dat
lrwx------ 1 kent kent 64 Nov 19 21:44 12 -> /home/kent/.googleearth/Cache/dbCache.dat.index
lrwx------ 1 kent kent 64 Nov 19 21:44 13 -> socket:[3978765]
lrwx------ 1 kent kent 64 Nov 19 21:44 14 -> socket:[3978763]
lrwx------ 1 kent kent 64 Nov 19 21:44 15 -> socket:[3978766]
lrwx------ 1 kent kent 64 Nov 19 21:44 17 -> socket:[3978764]
l-wx------ 1 kent kent 64 Nov 19 21:44 2 -> /home/kent/.xsession-errors
lr-x------ 1 kent kent 64 Nov 19 21:44 3 -> pipe:[3977583]
l-wx------ 1 kent kent 64 Nov 19 21:44 4 -> pipe:[3977583]
lr-x------ 1 kent kent 64 Nov 19 21:44 5 -> pipe:[3977584]
l-wx------ 1 kent kent 64 Nov 19 21:44 6 -> pipe:[3977584]
lr-x------ 1 kent kent 64 Nov 19 21:44 7 -> pipe:[3977587]
l-wx------ 1 kent kent 64 Nov 19 21:44 8 -> pipe:[3977587]
lrwx------ 1 kent kent 64 Nov 19 21:44 9 -> socket:[3977588]

Zusätzlich man manchmal sogar "FDINFO" (ich denke, das ist ein Kernel-Flag auf Linux ist)

cat /proc/2055/fdinfo/11 
pos:    232741818
flags:  02
  1. Sie ls Befehl und grep , um die Dateien von Chrom verwendet herauszufinden

$ ls -l / proc / * / fd | grep "chrome"

lrwx ------ 1 ba abc 64 16. Juli 22.19 104 -> /home/abc/.config/google-chrome/Default/Cookies

lr-x ------ 1 abc abc 64 16. Juli 22.19 113 -> /opt/google/chrome/nacl_irt_x86_64.nexe

lrwx ------ 1 abc abc 64 16. Juli 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 16. Juli 22.19 123 -> /home/abc/.cache/google-chrome/Default/Cache/data_2

lr-x ------ 1 abc abc 64 16. Juli 22.19 125 -> /home/abc/.config/google-chrome/Dictionaries/en-US-3-0.bdic

Ein weiterer Befehl, um das Ergebnis, um herauszufinden, mit lsof und grep

$ lsof | grep "chrome"

Chrom 2204 abc cwd DIR 8,5 4096 1441794 / home / abc

Chrom 2204 abc rtd DIR 8,5 4096 2 /

Chrom 2204 abc txt REG 8,5 87.345.336 5.111.885 / opt / google / chrom / chrom

Chrom 2204 abc mem REG 8,5 4.202.496 1.443.927 /home/abc/.cache/google-chrome/Default/Media Cache / DATA_3

Chrom 2204 abc mem REG 8,5 1.056.768 1.443.926 /home/abc/.cache/google-chrome/Default/Media Cache / data_2

Chrom 2204 abc mem REG 8,5 270.336 1.443.925 /home/abc/.cache/google-chrome/Default/Media Cache / data_1

Chrom 2204 abc mem REG 8,5 45056 1443924 /home/abc/.cache/google-chrome/Default/Media Cache / data_0

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top