У вас установлен /proc
?
Очевидно, поскольку вы заботитесь о том, чтобы большую часть времени /
монтировался только для чтения -, я могу предположить, что вы также можете не монтировать procfs. Но procfs нужен для того, чтобы lsof
находил открытые файлы.
Файлы, открытые процессами, открываются ядром через символические ссылки в procfs. Каталоги /proc/<pid>/fd
содержат символическую ссылку для каждого открытого файла. Имена символических ссылок — это номера файловых дескрипторов, а путь, на который ссылается символическая ссылка, — это путь к файлу.
Оборванные символические ссылки по-прежнему остаются в /proc
для открытых файлов, которые уже были удалены.И указанный путь к файлу переименовывается, чтобы заканчиваться «(удалено )».
То, что делает lsof +L1
по сути ничем не отличается от быстрого -лайнера типа:
stat -c%N /proc/[0-9]*/fd/* | grep deleted
Таким образом, вы можете использовать аналогичный -лайнер для перечисления всех открытых файлов, которые могут препятствовать повторному монтированию корневой файловой системы (при условии работы/proc
).
Однако, если вы смонтировали/смонтировали /proc
, единственными другими причинами, о которых я могу думать, являются ошибки... Во всяком случае, к вашему сведению, в моей текущей системе Debian Stretch. lsof +L1
работает как положено.
bash# lsb_release -d
Description: Debian GNU/Linux 9.5 (stretch)
bash# uname -a
Linux bwp-249-8 4.9.0-8-amd64 #1 SMP Debian 4.9.110-3+deb9u4 (2018-08-21) x86_64 GNU/Linux
bash# lsof -v
lsof version information:
revision: 4.89
[...]