LoginSignup
1
0

More than 1 year has passed since last update.

Ubuntuで外付けUSBメモリの取り出しをシェルスクリプト(端末)で実行するには?(ejectとumountの挙動の違いについても)

Last updated at Posted at 2022-09-18

調べた背景

充電と入れる曲の更新を兼ねて、家に帰ると携帯音楽プレイヤーをUSBでUbuntuに繋いでます。
(携帯音楽プレイヤー ≒ USBメモリ)

でもお出かけの前に下記のように、いちいちUbuntuの画面上で『ディスクの取り出し』をするのが面倒…。
image.png

そこで…

  1. 『ディスクの取り出し』のシェルスクリプトを作成。
  2. 上記をCronとかで毎日早朝(5時とか)に定期実行。

の環境を作れば…

  1. お出かけから 帰ってきたら 携帯音楽プレイヤーをUbuntuに 物理的に繋ぐだけ
  2. お出かけに 行く時は Ubuntuから携帯音楽プレイヤーを 物理的に外すだけ

となって、お出かけ準備が楽になるのでは?と考えました。

それに向けて、まずはUSBメモリの取り外し周りのコマンドはどれがいいかを調べました。

ejectコマンド

eject コマンドを使う時は…

eject デバイスのパス

もしくは下記でもいい。

eject マウントポイントのパス

例えば下記のようなディスク状態の場合…

image.png
image.png

空き領域 で指定
eject /dev/sdd

でもいいし

パーティション1 で指定
eject /dev/sdd1

でもいいし

マウントポイント で指定
eject /mnt/vico

でもいい。

ejectを実行すると下記のように、GUIで『ディスクの取り出し』をやったのと同じ状態になりました。

image.png

umountコマンド

下記を実行すると…

空き領域 で指定
umount /dev/sdd

下記文言でエラー。
(マウントしてないから当たり前といったら当たり前…)

umount: /dev/sdd: not mounted.

じゃあ別の方法を試そう。

下記を実行すると…

パーティション1 で指定
umount /dev/sdd1

下記のようにマウントが外れただけの状態になる。
『ディスクの取り出し』をした時は何か違う…。
あくまで アンマウントしてるだけ
image.png

ちなみに、下記のようにマウントポイントで指定した場合も、同じように『アンマウントしてるだけ』の状態でした。

マウントポイント で指定
umount /mnt/vico

まとめ

ejectumount では挙動(結果)が若干違う。
GUIで『ディスクの取り出し』した時と同じ結果になったのは eject
なので、 eject を採用。

注意点(権限)

eject について、root以外のユーザーでログインした状態で、端末から実行する場合は注意。
下記のように先頭にsudoが必要。

sudo eject /mnt/vico

これは umount においても同様。

注意点(取り出し済なのにeject実行時)

取り出し済なのに eject すると下記エラーになる。

image.png

eject を使うシェルスクリプト作る時は『マウントされている場合のみejectを実行する』というロジックにしておいた方がいい。

参考サイトさん

バージョン

Ubuntu 20.04.5 LTS

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0