14.04 では、自動的にマウントされたカメラをスクリプトで自動的にマウント解除できる

14.04 では、自動的にマウントされたカメラをスクリプトで自動的にマウント解除できる

私が持っている Ubuntu のバージョン (14.04.1) は、デジタル カメラを自動的にマウントし、カメラをどうするかを尋ねるボックスを生成します。表示されるオプションに満足できなかったので、gphoto2 を使用してカメラにアクセスし、カメラからファイルを取得するという、まさに私が望むことを実行するスクリプトを作成しました。1 つの問題は、ボックスに「何もしない」と指定した場合でも、カメラはマウントされたままであり、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

の後に場所をコピーすると、 (unmount->でアンマウントできますgio mount -u。ヘルプを見ると、gio help mount

gio mount -u gphoto2://%5Busb%3A002,002%5D/

シェル経由でカメラをアンマウントします。これを自動化するには、systemd スクリプトを作成する必要があります。

答え2

いじりたくない場合はudev(これはシステムの問題です)、udiskインターフェースを使用してカメラをマウント解除できます。

カメラは通常、/media/user/1234-5678/または同様の固定の場所にマウントされます (カメラがカードをフォーマットする方法によって異なります)。また、デバイスとしては、 などになります/dev/sdc1/

これで、スクリプトからアンマウントできるようになります。

 udisksctl unmount -b /dev/sdc1

問題はデバイスが変わる可能性があることです。私の解決策は、この小さな魔法を使うことです

 udisksctl unmount -b $(mount | grep 1234-5678  | cut -d" "  -f1)

カード ID が変更されない限り、これは機能します。

関連情報