外付けUSBハードドライブ、WD Elements、電源が自動的にオフにならない

外付けUSBハードドライブ、WD Elements、電源が自動的にオフにならない

私は過去 4 ~ 5 年間、Seagate Free Agent 外付けハード ドライブを所有しています。接続してファイル転送を終えたら、メニューの [安全な取り外し] をクリックします。すると、内部のディスクの回転が停止し、自動的にシャットダウンします。触るとわかります。また、電源ランプも消えます。

最近、新しい外付けハードディスク、WD Elements を購入しました。このハードドライブに対して「安全な取り外し」を実行すると、マウント解除されるだけで、電源は切れず、ディスクは回転し続け、触るとわかります。Ubuntu に付属の「ディスク」アプリケーションの「ドライブの電源を切る」ボタンも試しました。それでも、マウント解除されるだけです。

手動で取り外す前に、WD Elements ハード ドライブが正常にシャットダウンすることを確認したいと思います。デバイスが停止する前に強制的に取り外すと、寿命が短くなる可能性があると思います。

これを実行するのに役立つ他のコマンドやプログラムはありますか?

答え1

WD は Linux をそのままではサポートしていないため、実際に WD の電源をオフにするユーティリティを含む追加パッケージが必要です。

sudo apt-get install usdisks2
sudo udisksctl power-off --block-device /dev/XdY

ここでX、 および はYディスクに対応する文字です。

答え2

これまでのところ、ファイル マネージャーで「安全に取り出す」ための簡単な代替手段を見つけられなかったので、ここでコマンド ラインを使用する理由は次のとおりです。

まず、外付けハードドライブのデバイスIDまたはブロックIDを調べる必要があります。その後、またはを使用してudisksデバイスudisksctlのマウントを解除し、実際に電源をオフにします。私は答えました関連する質問少し前、Ubuntu を使い始めたばかりの頃だったので、こちらも参照することをお勧めします。基本的に、udisks --unmount /dev/sdb1 && udisks --detach /dev/sdbsdb1 がマウント ポイントで、sdb が実際のディスクである を使用します。

マウントポイントとサイズで識別するには、 と を使用できますlsblk。一方、 を使用することもできますudisksctl status。たとえば、現在 Sandisk Cruiser USB ドライブが接続されています。コマンドの出力は次のようになります。 ここに画像の説明を入力してください

ご覧のとおり、両方とも USB ドライブが /dev/sdc として識別されていることを報告しています。USB デバイスを接続するたびに、sdb、sdc、sdf などの異なる文字で識別されますが、sda は常にハードドライブです。

したがって、私の場合は、 または Fabby が提案した方法で USB を取り出しますudisks --unmount /dev/sdc1 && udisks --detach /dev/sdc。私が使用しているワンライナーでは、デバイス ID が保持されることがわかりました。つまり、USB を取り出して再接続すると、デバイスsdc名が引き続き提供されます。

udisksctl status | grep -i wdヒント:外付けハードドライブの情報のみを表示するために使用できます。

さて、これは私が純粋に楽しみのために作ったものですが、皆さんにとっては便利で、自分のニーズに合わせて調整できるものだと思います。安全な取り出しを行うスクリプトを作成できたらどうでしょうか?

シェルに外付け HDD または USB のブロック ID を知らせる必要があります。このコマンドの出力は次のようになります。udisksctl status | grep -i sandisk | xargs echo? 出力は次のようになります。SanDisk Cruzer Glide 1.27 2005425573077FA0AA67 sddつまり、スペースで区切られた USB に関する情報で、デバイス ID は最後の引数、つまり 6 番目の引数になります。ここでは、次のように cut コマンドを使用して抽出できます。udisksctl status | grep -i sandisk | xargs echo | cut -d' ' -f6

もちろん、あなたの場合は、udisksctl status | grep -i wd | xargs echoどの要素がブロックIDであるかを数えて、適切な番号を使用する必要があります。cut -d' ' -fx

次に、スクリプト remove-usb.sh をまとめました。次のようになります。

#!/bin/sh

DEVICE=$( udisksctl status | grep -i sandisk | xargs echo | cut -d' ' -f6 )


udisks --unmount /dev/$(echo $DEVICE)1 && udisks --detach /dev/$DEVICE

次に、/home/user/binフォルダに配置し、chmod +x /home/user/bin/remove-usb.shを実行します。binフォルダを追加することを忘れないでください。あなたの道. これで、 も作成できるようになりました。デスクトップファイルまたはファイルマネージャでスクリプトを実行可能にする

そしてこれがスクリプトの実行例です ここに画像の説明を入力してください

答え3

次のシェル スクリプトが私の場合は役に立ちます。

#!/bin/sh

DEVICE=$(udisksctl status | grep -i "WD Elements" | xargs echo | cut -d' ' -f6)

udisks --unmount /dev/$(echo $DEVICE)1
sudo udisksctl power-off --block-device /dev/$DEVICE

これは実際には @Serg と @Fabby の両方の投稿のアイデアを組み合わせたものです。

関連情報