web-dev-qa-db-ja.com

アンマウント後にUSBデバイスの電源を自動的にオフにする方法

USBディスクをマウント解除すると、自動的に電源がオフになるようにセットアップを作成する方法は?

2
Allen

一般的に、udisksctlはトリックを行うべきですifハードウェアがそれをサポートします。すべてのUSBディスクが標準に十分に準拠しているわけではありません...

udisksctl power-off -b /dev/sdXは、ディスクの電源をオフにしようとします。

$ udisksctl power-off --help 
Usage:
udisksctl power-off [OPTION...]

Safely power off a drive.

Options:
  -p, --object-path         Object path for ATA device
  -b, --block-device        Device file for ATA device
  --no-user-interaction     Do not authenticate the user if needed

これをいくつかの異なるドライブ(Seagate BackupPlus 1000GB、500GBドライブのICY-box)でテストしたところ、動作するようです。中国の超格安($ 0.90)S-ATA-USBアダプターでは動作しませんでした...

ejectコマンドを試すこともできます-これは、イジェクトコマンドをデバイスに送信します。多くの場合、これによりスピンダウンが発生します。 Sudo eject /dev/sdX-ただし、udisksctlが機能しない場合、機能する可能性はわずかです。

1
vidarlo

私が知る限り、一部のデスクトップはこれを自動的に行いますが、他のデスクトップはそうしません。 Plasmaはそれを行いません( https://bugs.kde.org/show_bug.cgi?id=270808 )簡単な回避策がそこに投稿されています( https:// bugs.kde.org/show_bug.cgi?id=270808#c64 )。これは、通知を表示するわずかに改善されたバージョンです。

回避策は、DeviceNotifierに新しいアクションを追加することで構成されます。このアクションは、デバイスのマウントを解除して電源を切るbashスクリプトを実行します。すべてのEdgeケースをテストしているわけではありませんが、ほとんどの場合に機能するはずです。次の2つのファイルを追加するだけです。 kded5の再起動後(またはログアウトして再度オンにした後)、リムーバブルデバイスには「USBデバイスのマウント解除と電源オフ」という新しいアクションが必要です。

〜/ .local/bin/power-device-off(必ずchmod + xこれを確認してください)

#!/bin/bash

if udisksctl unmount -b $1; then
    if udisksctl power-off -b $1; then
        notify-send "Device $1 powered off and can be removed safely."
    else
        notify-send "Unmounted $1, but could not power down."
    fi
else
    notify-send "Could not unmount $1."
fi

〜/ .local/share/solid/actions/power-devices-off.desktop

[Desktop Entry]
X-KDE-Solid-Predicate=[ [ [ StorageVolume.ignored == false AND StorageVolume.usage == 'FileSystem' ] OR [ IS StorageAccess AND StorageDrive.driveType == 'Floppy' ] ] OR StorageAccess.ignored == false ]
Type=Service
Actions=open;

[Desktop Action open]
Name=Unmount and Power-Off USB device
Exec=power-device-off "%d"
Icon=emblem-unmounted
0
Sunday