2010-08-25 11 views
6

EDIT 1lsof Mit einer Liste von Dateinamen erhalten

Ich habe Probleme mit angesichts der Argumente. Vielleicht ist es die Art, wie ich meine Argumente durch NSTask übergebe? Irgendwelche Vorschläge, wie ich das machen kann?

NSTask *file_Task = [NSTask new]; 
[file_Task setLaunchPath:@"/usr/sbin/lsof"]; 
[file_Task setArguments:[NSArray arrayWithObjects:@"+p", the_Pid, nil]]; 

Good Afternoon Fellow Coders ....

Ich verwende den folgenden Befehl ein:

lsof +p 13812 

die Liste der A-Dateien durch einen Prozess zugegriffen zu erhalten. Die Sache ist, gibt es mir viele zusätzliche Informationen, die ich nicht möchte, wie TYPE, Gerät, etc.

Gibt es ein Argument, das ich zu dem obigen Befehl hinzufügen kann, so dass ich ONLY die NAME?

Danke, danke danke! :)

Eric

+0

Möchten Sie auch nur die Dateien, die der Prozess geöffnet hat? 'lsof' liefert einen Eintrag für alle offenen Dateideskriptoren (Dateien, Sockets, ttys usw.) sowie für das aktuelle Arbeitsverzeichnis, shared libraries. – Beano

Antwort

4

Sie verwenden können:

lsof -Fn +p 12345 

Dies wird Ausgabe eine Liste von Linien, wobei die erste p durch die Prozess-ID gefolgt ist, und alle folgenden Zeilen aus n gefolgt durch den Dateinamen.

Wenn Sie möchten schnell Vorprozess dies, Sie etwas Ähnliches wie folgendes tun:

lsof -Fn +p 12345 | tail -n +2 | cut -c2- 

Siehe lsof man page für weitere Informationen, insbesondere unter dem OUTPUT FOR OTHER PROGRAMS Überschrift.

3

try:

 
lsof | tr -s ' ' | cut -d' ' -f9 
+0

Dies wird leider auch den Header drucken. – Dave

0

lsof + p 9174 | awk ‚{print $ 9}‘

+2

Betrachten Sie Leerzeichen in Dateinamen. –

1

Eintrag mit dem aktuell wiedergegebenen Lied (nfs Datei durch den Benutzer zugegriffen MPD):

$ sudo lsof -N -a -u mpd -Fn | 
    sed '/n/!d; s/^n//' 
/R/audio/[...] Jay-Jay Johanson , So Tell The Girls That I Am Back.mp3 

SED Teil löscht irgendwelche Linien nicht mit n Ausgang und entfernt n in der endgültigen Ausgabe.

Verwandte Themen