使用lsof获取文件名列表

时间:2010-08-25 14:48:46

标签: unix command-line

编辑1

我在使用给出的参数时遇到了问题。也许这是我通过NSTask传递我的论点的方式?有关如何做到这一点的任何建议吗?

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

下午好的编码员......

我正在使用以下命令:

lsof +p 13812

获取进程访问的文件列表。问题是它给了我很多我不想要的其他信息,如TYPE,DEVICE等。

我是否可以添加上述命令,以便 NAME

谢谢,谢谢,谢谢! :)

Eric

4 个答案:

答案 0 :(得分:6)

您可以使用:

lsof -Fn +p 12345

这将输出一个行列表,第一行是p,后跟进程ID, 以及包含n后跟文件名的所有后续行。

如果您想快速预处理,可以执行以下类似操作:

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

有关详细信息,请参阅lsof man page,具体请参见OUTPUT FOR OTHER PROGRAMS标题。

答案 1 :(得分:3)

尝试:

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

答案 2 :(得分:1)

列出当前播放的歌曲(nfs文件,由用户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部分删除任何不以n开头的行,并删除最终输出中的n。

答案 3 :(得分:0)

lsof + p 9174 | awk'{print $ 9}'