Ubuntu系统写一个检测目录下dev目录下U盘是否有挂载,没有挂载就执行命令mount挂载,有挂载就不理会,每5秒检测一次,U盘挂载节点会不一样
时间: 2024-10-21 08:03:10 浏览: 10
在Ubuntu系统中,你可以通过脚本结合`udev`规则和`inotifywait`工具来实现这个功能。首先,创建一个bash脚本,例如`check_usb_mount.sh`:
```sh
#!/bin/bash
# 定义挂载点
MOUNT_POINT=/media/your_usb_device
# 检查USB是否已挂载
if [ ! -d "$MOUNT_POINT" ]; then
# 如果未挂载,尝试挂载
MOUNT_COMMAND=mount /dev/sdb1 "$MOUNT_POINT"
if $?
then
echo "Mounted U盘 to $MOUNT_POINT"
else
echo "Failed to mount the USB device"
exit 1
fi
else
echo "U盘已挂载 at $MOUNT_POINT"
fi
# 使用inotifywait定期检查,间隔5秒
while true; do
inotifywait -r -m "$MOUNT_POINT" | while read path action file.attr new_state; do
case $action in
'remove')
if [ ! -d "$MOUNT_POINT" ]; then
# 如果设备移除,再次挂载
$MOUNT_COMMAND
fi
;;
*)
# 对于其他操作,如创建、修改等,不做处理
;;
esac
done
sleep 5
done
```
在这个脚本中,你需要将`/dev/sdb1`替换为你实际的USB设备名称。然后赋予该脚本执行权限:
```sh
chmod +x check_usb_mount.sh
```
最后,让脚本周期性运行:
```sh
nohup ./check_usb_mount.sh &
```
阅读全文