Версия Ubuntu, которая у меня есть (14.04.1), автоматически монтирует мою цифровую камеру и создает окно, предлагающее мне сказать, что с ней делать. Поскольку я был недоволен всеми представленными вариантами, я написал скрипт, который делает именно то, что мне нужно, используя gphoto2 для доступа к камере и получения файлов с нее. Единственная проблема заключается в том, что даже если я указал окну «ничего не делать», камера остается монтированной и, таким образом, с точки зрения gphoto2, недоступной, поскольку не освобождена. Чтобы освободить ее, я должен открыть или найти папку display и специально извлечь камеру. Я бы предпочел не заморачиваться с этим шагом и просто позволить моему скрипту работать. Мне интересно, есть ли способ сделать это.
решение1
Для Ubuntu 17.10, 18.04 и выше вам потребуется использовать утилиту gio
(которая заменила gvfs-mount
).
Если камера установлена и у вас установлен gphoto2, попробуйте
gio mount -s gphoto2
но если вы хотите нацелить камеру конкретно:
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.
решение2
Если вы не хотите возиться с настройками udev
(это системная вещь), вы можете использовать udisk
интерфейс для отключения камеры.
Камера обычно устанавливается в фиксированном месте, например, /media/user/1234-5678/
наподобие (YMMV, в зависимости от того, как камера форматирует карту); и в качестве устройства, например /dev/sdc1/
, .
Теперь вы можете отключить его от своего скрипта, используя
udisksctl unmount -b /dev/sdc1
проблема в том, что устройство может измениться; мое решение — это иметь это маленькое волшебство
udisksctl unmount -b $(mount | grep 1234-5678 | cut -d" " -f1)
что будет работать при условии, что идентификатор карты не изменится.