Вопрос или проблема
Каков эквивалент команды в командной строке функции Nautilus под названием “Безопасно извлечь носитель”? В частности, я удаляю USB-накопитель.
Команда udisks
скорее всего то, что вам нужно.
Хотя sudo umount /dev/sdXY
сработает, udisks может сделать это без прав уровня root (sudo).
Если у вас есть диск /dev/sdXY
, смонтированный, где X – это буква, представляющая ваш USB-диск, а Y – номер раздела (обычно 1), вы можете использовать следующие команды для безопасного извлечения диска:
udisks --unmount /dev/sdXY
udisks --detach /dev/sdX
Для практического примера, если у меня смонтирован раздел /dev/sdb1
, я бы выполнил это для его размонтирования и отсоединения:
udisks --unmount /dev/sdb1
udisks --detach /dev/sdb
Если ваш диск не смонтирован или никогда не был смонтирован, просто используйте вторую команду:
udisks --detach /dev/sdb
Я изначально нашел это через этот вопрос: https://superuser.com/a/430470/176493.
Использование udisks2:
В более новых дистрибутивах Ubuntu (я не уверен, когда произошел переход) udisks2 устанавливается вместо udisks.
Чтобы размонтировать и отсоединить диск с помощью udisks2, используйте следующие команды:
udisksctl unmount -b /dev/sdXY
udisksctl power-off -b /dev/sdX
Пример, если мой диск /dev/sdb1
:
udisksctl unmount -b /dev/sdb1
udisksctl power-off -b /dev/sdb
Аналогично вышеупомянутому, power-off может быть использован для отсоединения диска, даже если нет смонтированных разделов или если ни один раздел никогда не был смонтирован:
udisksctl power-off -b /dev/sdb
Фактический эквивалент операций монтирования/размонтирования Nautilus – это gvfs-mount -m -d /dev/ice /some/directory
и gvfs-mount -u /some/directory
. Это использует тот же API, что и Nautilus, GIO виртуальную файловую систему (gvfs), которая предоставляет различные инструменты для использования нескольких сервисов в качестве точек монтирования, таких как smb, NFS, FTP, блочные устройства и т.д.
Чтобы определить, какое устройство вам нужно размонтировать, просто используйте gvfs-mount -l
, что должно быть достаточно.
Это решение имеет особенность, что оно не требует повышенных прав, так как все управляется службами umount/gvfsd/polkit, что больше напоминает поведение Nautilus.
Как только вы узнали устройство, возможно, используя информацию df
, как в @rcpao ответ, лучший способ “извлечь” диск, по моему мнению, это использовать ту же команду, которую использует графический интерфейс:
udisksctl unmount --block-device /dev/sdc1
У меня есть скрипт для создания резервной копии на диске, который, как я знаю, будет смонтирован под /media/romano/movlin
, и после резервного копирования я делаю:
sync
udisksctl unmount -b $(mount | grep movlin | cut -d" " -f1)
Здесь mount | grep movlin | cut -d" " -f1
извлечет устройство, которое смонтировано под меткой “movlin” (в этом случае будет /dev/sdc1
), и затем его размонтирует.
-
‘ls -l /dev/disk/by-id/’ для поиска имён устройств вашего USB-накопителя и его разделов.
lrwxrwxrwx 1 root root 9 Сен 16 10:49 usb-PNY_USB_2.0_FD_AAC3170000000954-0:0 -> ../../sdk lrwxrwxrwx 1 root root 10 Сен 16 10:49 usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part1 -> ../../sdk1 lrwxrwxrwx 1 root root 10 Сен 16 10:49 usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part2 -> ../../sdk2
/dev/disk/by-id/usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part1 представляет собой символическую ссылку на /dev/sdk1
-
Если в вашем дистрибутиве нет /dev/disk/by-id/, вы можете использовать ‘df’ для поиска точки монтирования вашего USB-накопителя.
myuser@myhost:~$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/ubuntu--vg-root 1916153032 658404668 1160390336 37% / none 4 0 4 0% /sys/fs/cgroup udev 16438692 4 16438688 1% /dev tmpfs 3289976 2156 3287820 1% /run none 5120 0 5120 0% /run/lock none 16449860 18768 16431092 1% /run/shm none 102400 48 102352 1% /run/user /dev/sda1 240972 98990 129541 44% /boot /dev/sdc1 60915712 20992 60894720 1% /media/myuser/SD024-64GB /dev/sdk2 1004 876 128 88% /media/myuser/UEFI_NTFS /dev/sdk1 7970172 5798804 2171368 73% /media/myuser/NTFS
Таким образом, /media/myuser/UEFI_NTFS -> /dev/sdk2 <- usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part2
На этом этапе смотрите ответ daboross для команд размонтирования, отключения питания и отсоединения с использованием ‘udisksctl’ и ‘udisks’ с вашими обнаруженными точками монтирования и именами устройств дисков.
-
‘udisksctl unmount -b’ или ‘umount’, используя либо /dev/sdc1, либо /media/myuser/SD024-64GB.
myuser@myhost:~$ udisksctl unmount -b /dev/disk/by-id/usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part1 Размонтировано /dev/sdk1. myuser@myhost:~$ udisksctl unmount -b /dev/disk/by-id/usb-PNY_USB_2.0_FD_AAC3170000000954-0:0-part2 Размонтировано /dev/sdk2.
или
myuser@myhost:~$ sudo umount /dev/sdc1 [sudo] пароль для myuser: myuser@myhost:~$
или
myuser@myhost:~$ sudo umount /media/myuser/SD024-64GB [sudo] пароль для myuser: myuser@myhost:~$
-
Вы должны увидеть, как значок извлечения USB-накопителя исчезает в Nautilus, как только umount завершится.
-
‘udisksctl power-off -b /dev/sd{letter}{partition_number}’ для выключения диска.
myuser@myhost:~$ udisksctl power-off -b /dev/disk/by-id/usb-PNY_USB_2.0_FD_AAC3170000000954-0:0
Примечания:
- Устройство, как правило, имеет формат “/dev/sd{letter}{partition_number}”, где {letter} – это диск, а {partition_number} – это номер раздела на этом диске. Ваш диск может иметь более одного смонтированного раздела, поэтому вам нужно будет размонтировать все смонтированные разделы перед самим диском.
eject
из пакета eject:
sudo eject /dev/sdX
судя по всему, umount
всех разделов и переводит устройство в состояние, при котором вы должны удалить и повторно подключить его для повторного монтирования.
Ответ или решение
Командная строка как эквивалент функции "Безопасное извлечение диска" в Nautilus
Безопасное извлечение USB-накопителя, как и иные операции по управлению дисками в Linux, может осуществляться через командную строку. Это идеальное решение для тех, кто предпочитает терминальные команды вместо графических интерфейсов или кому требуется автоматизировать процессы.
Использование udisks
и udisksctl
Для выполнения операции безопасного извлечения диска обычно используются команды udisks
и udisksctl
. Эти утилиты позволяют управлять дисковыми устройствами без необходимости получения административных прав. Ниже представлены основные команды, которые помогут вам безопасно извлечь USB-флешку:
-
Узнать name устройства
Можно использовать команду
lsblk
илиfdisk -l
, чтобы выяснить, как называется ваш USB-накопитель. Например, при использованииlsblk
будет выведен список всех доступных блоков устройств:lsblk
-
Отмонтировать диск
Используя
udisks
, можно сначала отмонтировать устройство:udisks --unmount /dev/sdXY
В этом случае
sdXY
— это обозначение вашего устройства, гдеX
— это буква, обозначающая диск, аY
— номер раздела (обычно 1).В случае нового пакета
udisks2
, команда будет выглядеть следующим образом:udisksctl unmount -b /dev/sdXY
-
Извлечение устройства
После того как диск был отмонтирован, вы можете безопасно отключить его:
udisks --detach /dev/sdX
Или с использованием
udisksctl
:udisksctl power-off -b /dev/sdX
Пример использования
Если ваш USB-накопитель подключен как /dev/sdb
с разделом /dev/sdb1
, вы можете выполнить следующую последовательность команд:
udisksctl unmount -b /dev/sdb1
udisksctl power-off -b /dev/sdb
Дополнительно: Использование gvfs
Если вы используете окружение рабочего стола GNOME и Nautilus, вы можете также применять gvfs
для управления монтированными устройствами. Это делается с целью минимизации необходимости в административных привилегиях.
-
Чтобы отмонтировать устройство через
gvfs
:gvfs-mount -u /путь/к/точке/монтирования
-
Для получения списка всех смонтированных устройств:
gvfs-mount -l
Заключение
Использование командной строки для безопасного извлечения USB-накопителей не только увеличивает ваш контроль над системой, но и позволяет эффективно автоматизировать процессы. Команды udisks
и udisksctl
являются наиболее подходятщими инструментами для данной операции, обеспечивая простоту и эффективность. Надеюсь, вы нашли эту информацию полезной для своей работы в информационных технологиях.