Может ли автоматически смонтированная камера автоматически размонтироваться скриптом в 14.04
У меня есть версия Ubuntu (14.04.1), которая автоматически монтирует мою цифровую камеру и генерирует окно, предлагающее мне сказать, что с ним делать. Поскольку я был недоволен всеми представленными опциями, я написал скрипт, который делает именно то, что я хочу, используя gphoto2 для доступа к камере и получения файлов из нее. Единственная проблема заключается в том, что, даже если я указал "ничего не делать" с коробкой, камера остается смонтированной и, таким образом, что касается gphoto2, недоступна, поскольку не отпущена. Для того, чтобы освободить его, я должен открыть или найти отображение папки, и специально извлечь камеру. Я бы предпочел не беспокоиться об этом шаге и просто запустить мой скрипт. Мне интересно, есть ли способ сделать это.
2 ответа
Для Ubuntu 17.10, 18.04 и выше вам нужно использовать утилиту gio
(который заменил gvfs-mount
).
gio mount -l
покажет вам монтируемые диски.
Если у вас подключена камера, она может выглядеть так:
$ gio mount -l
Drive(0): DA4032
Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
Volume(0): Canon Digital Camera
Type: GProxyVolume (GProxyVolumeMonitorGPhoto2)
Mount(0): Canon Digital Camera -> gphoto2://%5Busb%3A002,002%5D/
Type: GProxyShadowMount (GProxyVolumeMonitorGPhoto2)
Mount(1): Canon Digital Camera -> gphoto2://%5Busb%3A002,002%5D/
Type: GDaemonMount
копирование местоположения после ->
позволит вам размонтировать его через gio mount -u
(размонтировать, если вы посмотрите на помощь: gio help mount
gio mount -u gphoto2://%5Busb%3A002,002%5D/
размонтирует камеру через оболочку. Теперь, чтобы автоматизировать это, вам нужно создать сценарий systemd.
Если вы не хотите возиться с udev
(что является системной вещью), вы можете использовать udisk
интерфейс для размонтирования камеры.
Камера обычно устанавливается в фиксированном месте, например /media/user/1234-5678/
или аналогичный (YMMV, зависит от того, как камера отформатирует карту); и как устройство, скажем /dev/sdc1/
,
Теперь вы можете размонтировать его из своего скрипта, используя
udisksctl unmount -b /dev/sdc1
проблема в том, что устройство может измениться; мое решение состоит в том, чтобы иметь эту маленькую магию
udisksctl unmount -b $(mount | grep 1234-5678 | cut -d" " -f1)
который будет работать при условии, что идентификатор карты не изменится.