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
ausgebenlsof | 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