14.04中自动挂载的相机可以通过脚本自动卸载吗

Sta*_*don 5 camera unmount

我的 Ubuntu 版本(14.04.1)会自动安装我的数码相机并生成一个框,邀请我说出如何处理它。由于我对所提供的所有选项都不满意,因此我编写了一个脚本,它完全符合我的要求,使用 gphoto2 访问相机并从中获取文件。一个问题是,即使我对盒子指定了“不执行任何操作”,相机仍保持安装状态,因此,就 gphoto2 而言,由于未发布而无法使用。为了释放它,我必须打开或找到一个文件夹显示,并专门弹出相机。我宁愿不理会这一步,而只是让我的脚本运行。我想知道是否有办法做到这一点。

jim*_*ron 2

对于 Ubuntu 17.10、18.04 及更高版本,您需要使用该实用程序gio(已替换为gvfs-mount)。

如果相机已安装并且您安装了 gphoto2,请尝试

gio mount -s gphoto2
Run Code Online (Sandbox Code Playgroud)

但如果你想专门瞄准相机:

gio mount -l
Run Code Online (Sandbox Code Playgroud)

将向您显示可安装的驱动器。

如果你插入了相机,它可能看起来像这样:

$ 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
Run Code Online (Sandbox Code Playgroud)

在之后复制位置->将允许您通过卸载它gio mount -u(卸载,如果您查看帮助:gio help mount

gio mount -u gphoto2://%5Busb%3A002,002%5D/
Run Code Online (Sandbox Code Playgroud)

将通过 shell 卸载相机。现在,要自动执行此操作,您需要创建一个 systemd 脚本。


Rma*_*ano 0

如果您不想摆弄udev(这是系统的事情),您可以使用该udisk界面卸载相机。

相机通常会安装在固定位置,类似/media/user/1234-5678/或类似(YMMV,取决于相机如何格式化卡);作为一种设备,比如说/dev/sdc1/

现在,您可以使用以下命令从脚本中卸载它

 udisksctl unmount -b /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

问题是设备可能会改变;我的解决方案是有这个小魔法

 udisksctl unmount -b $(mount | grep 1234-5678  | cut -d" "  -f1)
Run Code Online (Sandbox Code Playgroud)

只要卡 ID 不改变,这就会起作用。