我最近制作了两个脚本来负责在 Linux 中安装和卸载硬盘。我无法弄清楚的事情如下。我目前正在安装/dev/sdc1
到/home/media/externalHardDrive
.问题是,当我在未插入硬盘的情况下插入另一个 USB 设备(例如 USB 记忆棒)时,它很可能会将 USB 记忆棒放在/dev/sdc1
.我想学习一种在安装设备之前识别设备的方法,这样我就可以确保只有硬盘驱动器受到此脚本的影响。
这些是我的脚本: 卸载脚本.sh:
#!/bin/bash
MOUNT="/home/media/externalHardDrive"
if grep -qs "$MOUNT" /proc/mounts; then
umount "$MOUNT"
if [ $? -eq 0 ]; then
echo "HardDrive kan veilig worden verwijderd :D"
else
echo "Er is iets mis gegaan, blijf overal vanaf :("
fi
else
echo "Er is geen HardDrive gemount op $MOUNT, deze kan daarom niet verwijderd worden!"
fi
挂载脚本.sh
#!/bin/bash
MOUNT="/home/media/externalHardDrive"
if grep -qs "$MOUNT" /proc/mounts; then
echo "HardDrive is al gemount op $MOUNT ;)"
else
mount /dev/sdc1 "$MOUNT"
if [ $? -eq 0 ]; then
echo "HardDrive is succesvol gemount :D"
fi
fi
有人能指出我正确的方向吗?我正在 debian 服务器上运行这些脚本。
答案1
当您知道 USB 驱动器已打开时,/dev/sdc0
请执行以下操作:
ls -l /dev/disk/by-uuid | grep -F /dev/sdc1
并记下时间 (HH:MM) 和 之间的数字->
,假设它是xyz
。这xyz
是驱动器 UUID,它通常不会更改(除非您创建一个新的文件系统并且不再提供此数字作为选项)。
挂载时您可以使用该 UUID 代替设备来挂载:
mount UUID=xyz /home/media
或者将其插入条目UUID=xyz
的第一列/etc/fstab
,然后您就可以执行mount /home/media
.
或者,您可以为文件系统分配标签(例如,使用or-L
选项并以类似的方式使用。mkfs.ext4
mkfs.btrfs
LABEL=thelabelyouspecified
答案2
用于udev
安装硬盘。它将自动执行任务并使识别变得更加容易。如果连接的设备是硬盘驱动器,$ID_ATA=1
则脚本中会有一个变量。