Почему lsof жалуется на tracefs?

Каждое выполнение lsof выдает предупреждение о TraceFS:

$ lsof any-file
lsof: WARNING: can't stat() tracefs file system /sys/kernel/debug/tracing
      Output information may be incomplete.

$ mount | grep trace
tracefs on /sys/kernel/debug/tracing type tracefs (rw,relatime)

(Это находится на Ubuntu 15.10, полностью обновленной),

Действительно ли нормально для TraceFS быть смонтированным во время нормального функционирования?
Если так, как я могу сказать lsof пропускать его?

9
задан 21 March 2016 в 04:17

4 ответа

Ответ на Ваш вопрос находится в полномочиях файла:

попытка:

$ ls -l /sys/kernel/debug/tracing
ls: cannot access '/sys/kernel/debug/tracing': Permission denied
$ ls -l /sys/kernel
total 0
...
drwx------  31 root root    0 2016-06-15 11:06:47 debug
...

Так, обычным пользователям не разрешают получить доступ /sys/kernel/debug/tracing и, кажется, нет никакого способа попросить lsof стараться не получать доступ к нему.

Мы могли затем обсудить, является ли это ошибкой или нет, но ответ на Ваш вопрос сводится к этому.

11
ответ дан 23 November 2019 в 04:52

У меня были та же проблема и этот , ответ помог мне понять проблему немного лучше.

я узнал, что один способ удалить раздражающее предупреждение к umount debugfs

mount | grep debugfs 
none on /sys/kernel/debug type debugfs (rw,_netdev)

sudo umount $(mount | grep debugfs | awk '{print $3}')

, Если Вы теперь работаете lsof нет никакого предупреждения.

3
ответ дан 23 November 2019 в 04:52

Проблема в том, что у вас нет прав доступа к каталогу debugfs. Каталог tracefs был создан, чтобы позволить людям монтировать каталог трассировки непосредственно в / sys / kernel / tracing и не требовать включения debugfs. Но для обратной совместимости при монтировании каталога debugfs он автоматически монтирует tracefs в каталоге «tracing» debugfs.

Теперь, когда вы выполняете lsof, он просматривает файл / proc / filesystems, а также / proc / mounts. Он видит, что tracefs монтируется в / sys / kernel / debug / tracing, и таким образом пытается его определить. К сожалению, из-за того, что / sys / kernel / debug не позволяет пользователям без полномочий root просматривать его, вы получаете сообщение об ошибке, когда пытаетесь определить «трассировку» каталога из / sys / kernel / debug. Если вы отключите каталог debugfs, предупреждение исчезнет.

2
ответ дан 23 November 2019 в 04:52

Предупреждение написано в stderr. Вы всегда можете просто перенаправить это на / dev / null:

lsof <any-file> 2>/dev/null

Cheers,

0
ответ дан 23 November 2019 в 04:52

Другие вопросы по тегам:

Похожие вопросы: