調べた背景
充電と入れる曲の更新を兼ねて、家に帰ると携帯音楽プレイヤーをUSBでUbuntuに繋いでます。
(携帯音楽プレイヤー ≒ USBメモリ)
でもお出かけの前に下記のように、いちいちUbuntuの画面上で『ディスクの取り出し』をするのが面倒…。
そこで…
- 『ディスクの取り出し』のシェルスクリプトを作成。
- 上記をCronとかで毎日早朝(5時とか)に定期実行。
の環境を作れば…
- お出かけから 帰ってきたら 携帯音楽プレイヤーをUbuntuに 物理的に繋ぐだけ 。
- お出かけに 行く時は Ubuntuから携帯音楽プレイヤーを 物理的に外すだけ 。
となって、お出かけ準備が楽になるのでは?と考えました。
それに向けて、まずはUSBメモリの取り外し周りのコマンドはどれがいいかを調べました。
ejectコマンド
eject
コマンドを使う時は…
eject デバイスのパス
もしくは下記でもいい。
eject マウントポイントのパス
例えば下記のようなディスク状態の場合…
eject /dev/sdd
でもいいし
eject /dev/sdd1
でもいいし
eject /mnt/vico
でもいい。
ejectを実行すると下記のように、GUIで『ディスクの取り出し』をやったのと同じ状態になりました。
umountコマンド
下記を実行すると…
umount /dev/sdd
下記文言でエラー。
(マウントしてないから当たり前といったら当たり前…)
umount: /dev/sdd: not mounted.
じゃあ別の方法を試そう。
下記を実行すると…
umount /dev/sdd1
下記のようにマウントが外れただけの状態になる。
『ディスクの取り出し』をした時は何か違う…。
あくまで アンマウントしてるだけ 。
ちなみに、下記のようにマウントポイントで指定した場合も、同じように『アンマウントしてるだけ』の状態でした。
umount /mnt/vico
まとめ
eject
と umount
では挙動(結果)が若干違う。
GUIで『ディスクの取り出し』した時と同じ結果になったのは eject
。
なので、 eject
を採用。
注意点(権限)
eject
について、root以外のユーザーでログインした状態で、端末から実行する場合は注意。
下記のように先頭にsudoが必要。
sudo eject /mnt/vico
これは umount
においても同様。
注意点(取り出し済なのにeject実行時)
取り出し済なのに eject
すると下記エラーになる。
eject
を使うシェルスクリプト作る時は『マウントされている場合のみejectを実行する』というロジックにしておいた方がいい。
参考サイトさん
バージョン
Ubuntu 20.04.5 LTS