Каждое выполнение 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
пропускать его?
Ответ на Ваш вопрос находится в полномочиях файла:
попытка:
$ 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
стараться не получать доступ к нему.
Мы могли затем обсудить, является ли это ошибкой или нет, но ответ на Ваш вопрос сводится к этому.
У меня были та же проблема и этот , ответ помог мне понять проблему немного лучше.
я узнал, что один способ удалить раздражающее предупреждение к umount debugfs
mount | grep debugfs
none on /sys/kernel/debug type debugfs (rw,_netdev)
sudo umount $(mount | grep debugfs | awk '{print $3}')
, Если Вы теперь работаете lsof
нет никакого предупреждения.
Проблема в том, что у вас нет прав доступа к каталогу 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, предупреждение исчезнет.
Предупреждение написано в stderr. Вы всегда можете просто перенаправить это на / dev / null:
lsof <any-file> 2>/dev/null
Cheers,