2010-08-25 4 views
6

EDIT 1Использование LSOF, чтобы получить список имен файлов

У меня возникают проблемы, используя аргументы, приведенные. Может быть, так я передаю свои аргументы через NSTask? Любые предложения относительно того, как я могу это сделать?

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

Добрый день Попутчики Кодеры ....

Я использую следующую команду:

lsof +p 13812 

, чтобы получить список из файлов, доступ к процессу. Дело в том, что дает мне много дополнительной информации, которую я не хочу, таких как тип, устройство и т.д.

Есть аргумент, что я могу добавить к команде выше, так что я получаю ТОЛЬКО в ИМЯ?

благодарим вас, спасибо! :)

Эрик

+0

Вы также «хотите» только файлы, открытые в процессе? 'lsof' вернет запись для всех открытых файловых дескрипторов (файлов, сокетов, ttys и т. д.), а также текущего рабочего каталога, разделяемых библиотек. – Beano

ответ

4

Вы можете использовать:

lsof -Fn +p 12345 

Это будет выводить список строк, причем первый является p, за которой следует идентификатор процесса, и все последующие строки, состоящие из n с последующим по имени файла.

Если вы хотите быстро предобработки это, вы можете сделать что-то похожее на следующее:

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

ВИДЕТЬ lsof man page для получения дополнительной информации, в частности, под заголовком OUTPUT FOR OTHER PROGRAMS.

3

попробовать:

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

Это также печатает заголовок, к сожалению. – Dave

0

Lsof + р 9174 | AWK «{печать $ 9}»

+2

Рассмотрим пробелы в именах файлов. –

1

Листинг воспроизводимой композиции (Nfs файл, доступ к которому пользователя МПД):

$ 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 

СЕПГ часть удаляет любые строки, не начиная с п и удаляет п в конечной продукции.

Смежные вопросы