lsof: ПРЕДУПРЕЖДЕНИЕ: не может stat () файловая система fuse.gvfsd-fuse

Что именно здесь происходит?

root@bob-p7-1298c:/# ls -l /tmp/report.csv && lsof | grep "report.csv" -rw-r--r-- 1 mysql mysql 1430 Dec 4 12:34 /tmp/report.csv lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete. 

2 Solutions collect form web for “lsof: ПРЕДУПРЕЖДЕНИЕ: не может stat () файловая система fuse.gvfsd-fuse”

FUSE и его права доступа

lsof по умолчанию проверяет все смонтированные файловые системы, включая FUSE – файловые системы, реализованные в пользовательском пространстве, которые имеют особые права доступа в Linux.

Как вы можете видеть в этом ответе на Ask Ubuntu, смонтированная файловая система GVFS (специальный случай FUSE) обычно доступна только пользователю, который его установил (владелец gvfsd-fuse ). Даже root не может получить к нему доступ. Чтобы переопределить это ограничение, можно использовать опции mount allow_root и allow_other . Опция также должна быть включена в демон FUSE, который описан, например, в этом ответе … но в вашем случае вам не нужно (и не должно) изменять права доступа.

Исключение файловых систем из lsof

В вашем случае lsof не нужно проверять файловые системы GVFS, чтобы вы могли исключать вызовы stat() на них с помощью опции -e (или вы можете просто игнорировать waring):

 lsof -e /run/user/1000/gvfs 

Проверка определенных файлов по lsof

Вы используете lsof для получения информации обо всех процессах, запущенных в вашей системе, и только после этого вы фильтруете полный вывод с помощью grep . Если вы хотите проверить только определенные файлы, а связанные процессы используют параметр -f без значения, непосредственно следующего за ним, тогда укажите список файлов после разделителя «конец опций». Это будет значительно быстрее.

 lsof -e /run/user/1000/gvfs -f -- /tmp/report.csv 

Общее решение

Чтобы исключить все смонтированные файловые системы, на которых сбой stat() вы можете запустить что-то вроде этого (в bash ):

 x=(); for a in $(mount | cut -d' ' -f3); do test -e "$a" || x+=("-e$a"); done lsof "${x[@]}" -f -- /tmp/report.csv 

Или, конечно, использовать stat() ( test -e может быть реализован по-другому):

 x=(); for a in $(mount | cut -d' ' -f3); do stat --printf= "$a" 2>/dev/null || x+=("-e$a"); done 

lsof всегда пытается получить некоторую базовую информацию обо всех файловых системах, даже если аргументы предполагают, что никакой результат не будет получен из конкретной файловой системы. Если он не может получить доступ к файловой системе (в частности, для вызова stat в точке монтирования, как говорится в сообщении), он жалуется.

Как root, вы обычно имеете разрешение на доступ к файловой системе. Однако, из-за внутренней работы FUSE , root не автоматически получает все полномочия файловой системы FUSE. Это не функция безопасности (root может стать пользователем, которому принадлежит файловая система и получить доступ таким образом), это техническое ограничение.

GVFS-FUSE – это интерфейс FUSE для GVFS , который является механизмом, позволяющим приложениям Gnome обращаться к виртуальным файловым системам, реализованным плагинами Gnome: GVFS предоставляет приложениям без Gnome доступ к этим виртуальным файловым системам через обычный интерфейс файловой системы.

  • Отслеживание файлов, которые используются программой
  • Команда lsof слишком длинна для определенного идентификатора процесса
  • разрешение root запрещено в / proc / 1 / exe
  • Как захватить номер порта из этого выхода `lsof -F`, используя awk (или что-то лучше)?
  • ошибка памяти в lsof
  • Подозрительная сетевая активность: sshd proces появляется с lsof
  • Несоответствие команды lsof при попытке получить количество открытых файлов на каждый процесс
  • Как определить запущенные процессы с помощью пакета библиотеки?
  • Как я могу понять, что мешает монтированию привязки отключиться?
  • lsof пропускает файлы
  • Команда для уничтожения определенного PID, предоставленного предыдущей командой
  • Interesting Posts

    Сетевой перевод, один к одному, не один для многих

    Пожалуйста, объясните вывод команды ls -all

    зацикливание команды без ожидания первого запуска

    Некоторые макросы M4, похоже, не определены

    Почему передача HEREDOC в виде строки для `ruby -e` не работает?

    Разархивировать архив с одним файлом и переименовать вывод в соответствии с именем архива

    Samba – Не удается записать в share с "unix extensions = no", установленным в smb.conf

    Фиксирование заголовков объектов git

    Как устранить эту проблему при загрузке?

    Когда я запускаю `./command.sh &`, фоновая задача приостанавливается. Как я могу продолжать работать?

    Выйти в файл и прочитать его

    Попытки унифицировать Linux и другие бесплатные Unix?

    Как заставить Linux обнаруживать устройство PS / 2 (например, мышь) по требованию?

    'ls -1': список имен файлов без расширения

    Какие среды рабочего стола Linux поддерживают дисплеи HiDPI?

    Linux и Unix - лучшая ОС в мире.