我想让我的家用 Ubuntu 服务器自动挂载 USB 设备。目前,我手动写入
sudo mount /dev/sda1 /media/library
但是,我尝试在 /etc/init 中编写 Upstart 脚本 start-library.conf,但没有成功。我做错了什么吗?该文件的内容如下:
exec sudo mount /dev/sda1 /media/library
我也尝试了一些小节,比如
script
sudo mount /dev/sda1 /media/library
end script
但那也不起作用。我是否遗漏了 Upstart 模板中的某些内容?或者它只是因为在执行此脚本时这些 USB 设备尚未加载而无法工作?我能做些什么吗?指定运行级别?如果可以,指定哪一个?等等。我不知道。
答案1
usb安装是自动挂载和卸载 USB 大容量存储设备的工具。
您可以像这样安装它:
在终端中运行:
sudo apt update
然后运行:
sudo apt install usbmount
然后运行:
sudo systemctl restart udev
完成。当 USB 存储设备连接时,它将被挂载/media/usb[0-7]
,断开连接时它将被卸载。
答案2
我通过编写脚本并在启动时通过 rc.local 执行该脚本解决了我的问题:
- 脚本。将标签“MYUSB”更改为您的 USB 设备的标签。
#!/bin/bash
# FUNCTION: Mount or unmount usb device to library
# ARGUMENTS: none
# AUTHOR: Jeremy Lanssiers
# COPYRIGHT: 2021 GNU
# VERSION: 1.0
# REQUIRES: mount
# Check arguments
if [ -z "$1" ] || [[ ( $1 != "mount" ) && ( $1 != "umount" ) ]]
then
echo "USAGE: [mount/umount] [device]"
exit 1
fi
# Set variables
DEVICE=$(blkid | egrep -o '\/dev\/(.*)\:\ LABEL="MYUSB"')
DEVICE=$(echo $DEVICE | egrep -o '\/dev\/[a-zA-Z0-9]{1,10}')
LIBRARY=/media/library
# Mount or unmount library
if [ $1 = "mount" ]
then
mount $DEVICE $LIBRARY
exit 0
fi
if [ $1 = "umount" ]
then
umount $DEVICE $LIBRARY
exit 0
fi
exit 1
- rc.本地
#!/bin/bash
# /etc/rc.local
# FUNCTION: execute scripts at startup
# ARGUMENTS: none
# AUTHOR: [email protected]
# COPYRIGHT: 2021 GNU
# VERSION: 1.0
# REQUIRES: mount
/opt/mount-lib.sh mount
/etc/sysctl.d
/etc/init.d/procps restart
exit 0