使用单个命令卸载所有连接的 USB 磁盘

stu*_*ent 8 linux mount unmounting luks

是否有一种(安全的)方法可以使用单个命令行命令卸载所有连接的 USB 设备(usb-hdds、usb-sticks)上的所有分区,包括几个加密的 luks 分区?

只应卸载 USB 设备上的分区,仅此而已!

Tim*_*Tim 4

我尽力保持 posix 的状态,请注意,如果您没有合适的“udevadm”软件包可用于显示 udev 信息,它将失败。

#!/bin/bash

command_exists () {
    type "$1" &> /dev/null
}

CMD=""

if command_exists udevadm; then
        CMD="$(which udevadm) info -q all -n"
fi

if command_exists udevinfo; then
        CMD="$(which udevinfo) -q all -n"
fi

echo "The udevinfo command for this system is $CMD"


for disk in /dev/sd*
do
        DISK=$($CMD $disk | grep ID_BUS)
        if [[ "$DISK" == *usb ]]; then
                echo "$disk is USB, now unmounting.."
                umount $disk
        fi
done
Run Code Online (Sandbox Code Playgroud)