2010-08-18 4 views
13

Wie bekomme ich in Linux eine Liste von Dateien, die gerade im Programm X geöffnet sind?Linux: Liste der Dateien abrufen, die ein Programm gerade geöffnet hat

(genauer gesagt, ich bin auf Fedora, und das Programm ist Zend Studio, aber ich nehme an, es ist eine allgemeine Antwort.)

+0

Mögliche Duplikat http://stackoverflow.com/questions/2681501/identify-the-files-opened-a-particular-process-on-linux –

+0

Mögliche Duplikat von [ Identifizieren Sie die geöffneten Dateien einen bestimmten Prozess auf Linux] (https://stackoverflow.com/questions/2681501/identify-the-files-opened-a-particular-process-on-linux) – eadmaster

Antwort

18

Verwendung z.B. lsof ("list open files") und filtern Sie die Ausgabe oder verwenden Sie die Option -c programX, um sie auf Dateien zu beschränken, die von programX geöffnet wurden. Dieser Ausdruck kann ein Platzhalter sein.

+0

Ich habe 'lsof | versucht grep somefile', wobei 'somefile' eine Datei ist, von der ich weiß, dass sie in Zend Studio geöffnet ist, aber sie findet nichts. Das gleiche gilt, wenn eine Datei in gedit geöffnet ist. Vielleicht sind diese Dateien technisch nicht "offen", außer wenn das Programm sie aktiv liest oder speichert, und den Rest der Zeit hat es nur eine Kopie im Speicher und einen Verweis darauf, wo die Datei gespeichert ist? –

1

Installieren Sie das Programm lsof, wenn Sie nicht bereits haben. Holen Sie sich die PID des laufenden Programms. Führen Sie lsof -p [pid] aus.

6

Sie können symbolische Verknüpfungen zu den tatsächlichen Dateien in /proc/PID/fd finden, wobei PID die Prozess-ID ist.

+0

Hmmm. Ich versuche die Prozess-ID zu ermitteln - ich habe 'ps -AF | grep zend' und habe verschiedene Listings (ich habe Zend Server läuft etc), aber nichts, was wie Studio aussah. Ich schloss Zend Studio und versuchte es erneut, und die Liste war die gleiche. Irgendwelche Gedanken darüber, wie man die PID bestimmt, außer "fange an, sie zu töten und zu sehen, wann sie schließt?" –

+0

+1, wenn Sie lsof nicht installiert haben. – ATorras

2

ls -l /proc/<zend studio's pid>/fd wird eine Liste der Dateideskriptoren gedruckt. Diejenigen, die Dateien zuordnen, die über open() geöffnet wurden, sind symbolische Links zu dem Dateipfad, der zum Öffnen der Dateien verwendet wird.

0
lsof -p [PID] 

Oder die PID zu erhalten in einem Rutsch

lsof -p `pgrep [PROG_NAME]` 

Oder, noch einfacher

lsof -c [PROG_NAME] 
0

können Sie

ls /proc/PID/fd | wc -l 

benutzen, die die Anzahl der Dateien Retuns geöffnet von PID oder Sie können verwenden lsof (Liste der geöffneten Dateien)

lsof -a -p pid 
Verwandte Themen