GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich feststellen, welche Dateien ein Prozess geöffnet hat?

Lösung 1:

Ich liebe lsof , aber ich denke, es ist übertrieben für eine einfache Frage wie diese. Die /proc Dateisystem enthält alles, was Sie wissen möchten. Vielleicht wäre ein Beispiel am besten:

# ps ax|grep tail
 7196 pts/4    S+     0:00 tail -f /var/log/messages
 8773 pts/0    R+     0:00 grep tail
# ls -l /proc/7196/cwd
lrwxrwxrwx 1 insyte insyte 0 2009-07-29 19:05 /proc/7196/cwd -> /home/insyte
# ls -l /proc/7196/fd
total 0
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 0 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:05 1 -> /dev/pts/4
lrwx------ 1 insyte insyte 64 2009-07-29 19:02 2 -> /dev/pts/4
lr-x------ 1 insyte insyte 64 2009-07-29 19:05 3 -> /var/log/messages

Wie Sie sehen können, ist die /proc/$PID Das Verzeichnis enthält einen symbolischen Link namens "cwd", der die CWD des Prozesses verknüpft. Dasselbe gilt für die in /proc/$PID/fd aufgeführten offenen Dateideskriptoren .

Die /proc/$PID Hierarchie enthält eine Fülle von Informationen über alle laufenden Prozesse. Stöbern lohnt sich!

Lösung 2:

Wenn Sie den Befehl lsof haben verfügbar [was die meisten *nix-Varianten tun] würden Sie verwenden:

lsof -p NNN

zum Auflisten von Dateien, die vom Prozess NNN geöffnet wurden. Ich habe BSD seit einiger Zeit nicht mehr verwendet, aber aus dem Gedächtnis fuser ist eine enge Parallele zu lsof.

Ich bin mir nicht sicher, ob ich einen Befehl habe, um cwd zu finden eines Prozesses, aber unter Linux ist cwd mit dem /proc-Verzeichnis des Prozesses verknüpft, dh. /proc/NNN/cwd.

Lösung 3:

Wenn Sie die Prozess-PID kennen, können Sie einfach ein

ausgeben
lsof | grep YOURPID

Schnell und einfach zu merken.

oder

lsof -c yourprogramexecutable

Lösung 4:

Probieren Sie lsof aus, wenn es auf Ihrem System installiert ist

D


Linux
  1. So erhöhen Sie das Limit für die Anzahl der geöffneten Dateien in Linux

  2. Wie kann man feststellen, welcher Prozess eine Datei erstellt?

  3. Wie identifiziere ich einen Prozess, der keine Pid hat?

  4. Wie kann ich unter Linux feststellen, welcher Prozess meinem Prozess ein Signal gesendet hat?

  5. Wie kann ich bekommen, was meine Hauptfunktion zurückgegeben hat?

Wie finde ich heraus, welcher Prozess eine Datei in Linux gesperrt hat?

Wie kann ich feststellen, ob ich mich in einem Bildschirm befinde?

Wie kann ich feststellen, welcher Prozess eine Datei in Linux geöffnet hat?

Wie kann man einen Port schließen oder (entbinden?), der von einer bösartigen Anwendung offen gelassen wurde?

Wie kann ich feststellen, welcher Prozess einen bestimmten Port unter Linux geöffnet hat?

Wie kann ich feststellen, welcher Prozess dazu führt, dass kswapd verwendet wird?