Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使用lsof获取文件名列表_Unix_Command Line - Fatal编程技术网

Unix 使用lsof获取文件名列表

Unix 使用lsof获取文件名列表,unix,command-line,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 获取进

编辑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
获取进程访问的文件列表。问题是它给了我很多我不想要的额外信息,比如类型、设备等等

是否有一个参数可以添加到上述命令中,以便仅获取名称

谢谢你,谢谢你谢谢你!:)

埃里克

试试:

lsof | tr -s ' ' | cut -d' ' -f9 lsof | tr-s'|切口-d'-f9
lsof+p 9174 | awk'{print$9}'

您可以使用:

lsof -Fn +p 12345
这将输出一个行列表,第一行是
p
,后面是进程ID, 以及由
n
后跟文件名组成的以下所有行

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

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

有关更多信息,请参阅,特别是在“其他程序的输出”标题下。

列出当前播放的歌曲(nfs文件,由用户mpd访问):


sed部分删除所有不以n开头的行,并在最终输出中删除n

您是否还“只”想要进程已打开的文件LSOF将返回所有打开的文件描述符(文件、套接字、TTYS等)以及当前工作目录、共享库的条目。考虑文件名中的空格。这也将打印页眉,不幸的是,FYI,至少在最近版本的“代码> LSOF < /代码>中,您的示例(<代码> LSOF-FN+P 12345 )也将输出文件描述符行。
$ 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