Как правильно размонтировать смонтированные каталоги после выполнения chroot?

[

]Вы можете использовать первую форму, но вам нужно поместить пробелы после [][[[]]. Смотрите:[

] [
$ type [[
[[ is a shell keyword

$ help [[
[[ ... ]]: [[ expression ]]
    Execute conditional command.
] [

]Так ваша команда должна выглядеть следующим образом:[

] [
[[ $HOSTNAME =~ 'q20' ]] && alias a='cd ~/a1' || alias a='cd ~/a99'
]
1
04.05.2015, 17:47
2 ответа

Обычный способ найти, что мешает размонтировать файловую систему, - это перечислить процессы, в которых открыт файл (или дескриптор файла, или их текущий каталог и т. д.):

lsof /path/to/mount/point
fuser -m /path/to/mount/point

Просмотрите список процессов и завершите их, если это необходимо.

Есть также несколько способов, которыми в самом ядре может происходить что-то, препятствующее размонтированию, например, если под ним есть другая точка монтирования (например, вы не можете размонтировать / mnt / chroot , а / mnt / chroot / proc смонтирован).

Когда у вас есть привязки монтирования, команды, подобные приведенному выше списку файлов, открываются через любой путь к файловой системе.Так, например, fuser -m / mnt / chroot / run перечисляет процессы, у которых есть файлы, открытые в этой файловой системе, независимо от того, доступны ли они через / run или через / mnt / chroot / run .

Чтобы найти, что использует точку монтирования, перечислите процессы и пути, по которым они открывают файлы, и выполните некоторую фильтрацию путей. Например:

lsof /mnt/chroot/run | grep /mnt/chroot

или чтобы получить их все

lsof | grep /mnt/chroot

, или вы можете напрямую получить доступ к / proc :

ls -l /proc/[0-9]*/fd/* | grep /mnt/chroot

Для автоматической обработки (при условии, что недавний sed поддерживает -z для нулевых разделителей):

find /proc/[0-9]*/fd -type l -printf '%p %l/\0' |
sed -nz 's!^/proc/\([0-9]*\)/fd/[0-9]* /mnt/chroot/.*!\1!p' |
sort -nu

Если вы действительно не можете найти то, что удерживает смонтированную файловую систему, но вам нужно вернуть точку монтирования, вы можете переместить точку монтирования в сторону, создав пустой каталог где-нибудь и запустив mount --move / current / mount / point / empty / directory / out / of / the / way . Вы также можете выполнить ленивое отключение ( umount -l ), в результате чего файловая система вообще не будет иметь точки монтирования (поэтому файлы на ней больше не могут быть открыты), но все равно будет монтироваться, пока есть есть открытые файлы или другие ссылки на него.

1
27.01.2020, 23:37

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

В таком случае повторно войдите в chroot (в оболочке) и остановите службы или просто уничтожьте их (даже "вне" chroot), если вас не заботит их состояние и т. Д.

1
27.01.2020, 23:37

Теги

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