umount, umount2 -
размонтирует
файловую
систему
Standard C library (
libc,
-lc)
#include <sys/mount.h>
int umount(const char *target);
int umount2(const char *target, int flags);
Вызовы
umount() и
umount2() удаляют
подключение
(самого
верхнего
уровня) к
файловой
системе,
примонтированной
к
target.
Для
размонтирования
файловых
систем
требуются
права (Linux:
мандат
CAP_SYS_ADMIN).
В Linux 2.1.116
добавлен
системный
вызов
umount2(),
который,
подобно
umount(),
размонтирует
заданный
объект, но
позволяет
указать
дополнительные
флаги
flags,
контролирующие
поведение
операции:
-
MNT_FORCE
(начиная с Linux
2.1.116)
- Попросить
файловую
систему
прервать
ожидающие
запросы
перед
попыткой
размонтирования.
Это может
позволить
выполнить
размонтирование
без
ожидания
недоступного
сервера, но
может
привести к
потере
данных.
Если после
прерывания
запросов
некоторые
процессы
продолжат
обращаться
к файловой
системе,
размонтирование
не будет
выполнено.
В Linux 4.12 MNT_FORCE
поддерживается
только в
следующих
файловых
системах: 9p
(начиная с Linux
2.6.16), ceph (начиная
с Linux 2.6.34), cifs
(начиная с Linux
2.6.12), fuse (начиная
с Linux 2.6.16), lustre
(начиная с Linux
3.11) и NFS
(начиная с Linux
2.1.116).
-
MNT_DETACH
(начиная с Linux
2.4.11)
- Perform a lazy unmount: make the mount unavailable for new
accesses, immediately disconnect the filesystem and all filesystems
mounted below it from each other and from the mount table, and actually
perform the unmount when the mount ceases to be busy.
-
MNT_EXPIRE
(начиная Linux 2.6.8)
- Mark the mount as expired. If a mount is not currently in
use, then an initial call to umount2() with this flag fails with
the error EAGAIN, but marks the mount as expired. The mount remains
expired as long as it isn't accessed by any process. A second
umount2() call specifying MNT_EXPIRE unmounts an expired
mount. This flag cannot be specified with either MNT_FORCE or
MNT_DETACH.
-
UMOUNT_NOFOLLOW
(начиная с Linux
2.6.34)
- Не
следовать
по ссылке,
если target
является
символьной
ссылкой.
Это флаг
помогает
избежать
проблем с
безопасностью
в
программах
принадлежащих
root и с
установленным
битом set-user-ID,
которые
позволяют
непривилегированным
пользователям
размонтировать
файловые
системы.
On success, zero is returned. On error, -1 is returned, and
errno is set
to indicate the error.
Коды
ошибок,
описанные
ниже, не
зависят от
типа
файловой
системы. У
каждой
файловой
системы
могут быть
свои коды
ошибок и
своё
собственное
поведение.
Подробности
смотрите в
исходном
коде ядра Linux.
- EAGAIN
- Вызов umount2()
с флагом
MNT_EXPIRE успешно
пометил
незанятую
файловую
систему
как
недействительную.
- EBUSY
- Объект
target не может
быть
размонтирован,
так как он
занят.
- EFAULT
- Объект
target
указывает
вне
адресного
пространства,
доступного
пользователю.
- EINVAL
- Значение
target не
является
точкой
монтирования.
- EINVAL
-
target is locked; see
mount_namespaces(7).
- EINVAL
- Вызов umount2()
был вызван
с флагом
MNT_EXPIRE и с MNT_DETACH
или MNT_FORCE.
-
EINVAL
(начиная с Linux
2.6.34)
- Вызов umount2()
был сделан
с неверным
значением
флага flags.
- ENAMETOOLONG
- Значение
пути
длиннее
чем MAXPATHLEN.
- ENOENT
- Указан
пустой
путь или
одна из его
частей не
существует.
- ENOMEM
- Ядро не
может
выделить
свободную
страницу
для
копирования
имени
файла или
данных.
- EPERM
- Вызывающий
процесс не
имеет
требуемых
привилегий.
MNT_DETACH and
MNT_EXPIRE are available since glibc 2.11.
Эти
функции
есть
только в Linux, и
они не
должны
использоваться
в
переносимых
программах.
Shared mounts cause any mount activity on a mount, including
umount()
operations, to be forwarded to every shared mount in the peer group and every
slave mount of that peer group. This means that
umount() of any peer in
a set of shared mounts will cause all of its peers to be unmounted and all of
their slaves to be unmounted as well.
This propagation of unmount activity can be particularly surprising on systems
where every mount is shared by default. On such systems, recursively bind
mounting the root directory of the filesystem onto a subdirectory and then
later unmounting that subdirectory with
MNT_DETACH will cause every
mount in the mount namespace to be lazily unmounted.
To ensure
umount() does not propagate in this fashion, the mount may be
remounted using a
mount(2) call with a
mount_flags argument that
includes both
MS_REC and
MS_PRIVATE prior to
umount()
being called.
Изначально
функция
umount()
вызывалась
как
umount(device) и
возвращала
ENOTBLK при
попытке
работы с
любым не
блочным
устройством.
В Linux 0.98p4 был
добавлен
вызов
umount(dir)
для
поддержки
анонимных
устройств.
В Linux 2.3.99-pre7 был
убран
вызов
umount(device),
остался
только
umount(dir)
(теперь
устройства
могут быть
подключены
более чем к
одной
точке,
поэтому
указания
только
устройства
недостаточно).
mount(2),
mount_namespaces(7),
path_resolution(7),
mount(8),
umount(8)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitriy Ovchinnikov
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
Katrin Kutepova <
[email protected]>, Yuri Kozlov
<
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]