14.04中自動掛載的相機可以透過腳本自動卸載嗎

14.04中自動掛載的相機可以透過腳本自動卸載嗎

我的 Ubuntu 版本(14.04.1)會自動安裝我的數位相機並產生一個框,邀請我說出如何處理它。由於我對所提供的所有選項都不滿意,因此我編寫了一個腳本,該腳本完全符合我的要求,使用 gphoto2 訪問相機並從中獲取文件。一個問題是,即使我對盒子指定了“不執行任何操作”,相機仍保持安裝狀態,因此,就 gphoto2 而言,由於未發布而無法使用。為了釋放它,我必須打開或找到一個資料夾顯示,並專門彈出相機。我寧願不理會這一步,而只是讓我的腳本運行。我想知道是否有辦法做到這一點。

答案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/

將透過 shell 卸載相機。現在,要自動執行此操作,您需要建立一個 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)

只要卡片 ID 不改變,這就會起作用。

相關內容