Может ли автоматически смонтированная камера автоматически размонтироваться скриптом в 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)

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

Другие вопросы по тегам