ubuntu实现自动挂载u盘

ubuntu实现自动挂载u盘

但是,有些设施可以在没有图形工具的情况下进行复制,并且在系统上占用的空间非常小。
例如,在我的设置中,我已经实现了USB自动挂载服务,而无需使用任何外部工具/服务,只有udev和systemd。

编写shell脚本

nano /usr/local/bin/usb-mount.sh
#!/bin/bashACTION=$1
DEVBASE=$2
DEVICE="/dev/${DEVBASE}"# See if this drive is already mounted
MOUNT_POINT=$(/bin/mount | /bin/grep ${DEVICE} | /usr/bin/awk '{ print $3 }')do_mount()
{if [[ -n ${MOUNT_POINT} ]]; then# Already mounted, exitexit 1fi# Get info for this drive: $ID_FS_LABEL, $ID_FS_UUID, and $ID_FS_TYPEeval $(/sbin/blkid -o udev ${DEVICE})# Figure out a mount point to useLABEL=${ID_FS_LABEL}if [[ -z "${LABEL}" ]]; thenLABEL=${DEVBASE}elif /bin/grep -q " /media/${LABEL} " /etc/mtab; then# Already in use, make a unique oneLABEL+="-${DEVBASE}"fiMOUNT_POINT="/media/${LABEL}"/bin/mkdir -p ${MOUNT_POINT}# Global mount optionsOPTS="rw,relatime"# File system type specific mount optionsif [[ ${ID_FS_TYPE} == "vfat" ]]; thenOPTS+=",users,gid=100,umask=000,shortname=mixed,utf8=1,flush"fiif ! /bin/mount -o ${OPTS} ${DEVICE} ${MOUNT_POINT}; then# Error during mount process: cleanup mountpoint/bin/rmdir ${MOUNT_POINT}exit 1fi}do_unmount()
{if [[ -n ${MOUNT_POINT} ]]; then/bin/umount -l ${DEVICE}fi# Delete all empty dirs in /media that aren't being used as mount points. for f in /media/* ; doif [[ -n $(/usr/bin/find "$f" -maxdepth 0 -type d -empty) ]]; thenif ! /bin/grep -q " $f " /etc/mtab; then/bin/rmdir "$f"fifidone
}
case "${ACTION}" inadd)do_mount;;remove)do_unmount;;
esac
chmod 777 /usr/local/bin/usb-mount.sh

编写服务

nano /etc/systemd/system/usb-mount@.service
[Unit]
Description=Mount USB Drive on %i[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/local/bin/usb-mount.sh add %i
ExecStop=/usr/local/bin/usb-mount.sh remove %i

(我们使用“@”文件名语法,以便我们可以将设备名称作为参数传递)

编写udev规则

nano /etc/udev/rules.d/99-local.rules
KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/systemctl start usb-mount@%k.service"
KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/bin/systemctl stop usb-mount@%k.service"
KERNEL=="sd[a-z]", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/systemctl start usb-mount@%k.service"
KERNEL=="sd[a-z]", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/bin/systemctl stop usb-mount@%k.service"

更新配置

udevadm control --reload-rules
systemctl daemon-reload

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/17494.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GAN:生成对抗网络的突破与应用

第一章:引言 在当今信息时代,人工智能技术的发展如日中天。其中,生成对抗网络(GAN)作为一种强大的生成模型,引起了广泛的关注和研究。GAN通过两个相互对抗的神经网络,即生成器和判别器&#xf…

vite性能优化提升开发体验之hmr和预编译

一、vite中的预编译 1. 预编译概念介绍 Vite,一个由Vue.js开发者尤雨溪开发的新型前端构建工具,主要利用了现代浏览器支持的ESM(ES模块)来进行快速开发。Vite在法语中意为“快”,其中最大的亮点就是其开发服务器启动…

18 SAR图像和光学图像的配准算法(matlab程序)

1.简述 合成孔径雷达(synthetic aperture radar,SAR)图像配准的主要目标是对同一或不同传感器在不同时间、不同视点捕获的SAR图像进行配准。SAR因具有全天候成像能力和地物穿透能力,因此具有非常广泛的应用,如变化检测[1]、图像融合[2]、目标检测与识别[…

低代码——现代数字化人才培养的创新引擎

如今,随着数字时代的蓬勃发展,催生了各行各业数字化转型的浪潮。如果说技术是衍生数字时代的基石,那数字化人才一定是这场浪潮中不可或缺的推动力量。 随着新兴技术的不断创新和应用,全行业对于复合型、创新型的优秀数字化人才需…

stm32usart+中断接收定长数据

文章目录 前言一、cubemx的配置二、代码编写1.主函数在这里插入图片描述2. it.c 总结 前言 中断接收固定的数据值。 一、cubemx的配置 开启USART1 打开NVIC中断 二、代码编写 1.主函数 #define RxBuf_SIZE_1 50 //USART1接收缓冲区大小 #define MainBuf_SIZE_1 50 //USAR…

软件工程——第11章面向对象设计知识点整理

本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 文章目录 1.什么是面向对象设计(OOD)? 2.优秀设计的主要特点是? 3.面向对象设计应遵循的准则有哪些&#xff1f…

开悟AIArena,深度学习神经网络,暑假开悟比赛的学习

目录 1.赛题简介 1.1.赛题目标 1.2.地图介绍 1.3.规则介绍 2.环境介绍 2.1.观测空间(Observation Space) 2.1.1.原始数据: 2.1.2.特征数据 2.1.3.特征提取 2.2.动作空间(Action Space) 2.3.坐标介绍&#xf…

Linux 创建文件的12种方法总结

在Linux中,可以使用多种方法来创建文件。以下是一些常见的方法: 1. touch命令 touch filename,用于创建一个空文件。如果文件已存在,则只更新其访问时间和修改时间。 touch 命令通常用于将文件的访问和修改时间更新为当前时间。…

【监控系统】Prometheus架构相关概念及源码部署实战

上篇我们介绍了业界主流监控框架的对比,我们监控系统这块主要是采用Prometheus。 那么,什么是Prometheus 官网:https://prometheus.io/docs/introduction/overview/ Prometheus是一个开源的系统监控和报警系统,现在已经加入到CN…

Excel二级联动下拉列表(横向字典配置)

二级联动下拉列表 1. Excel内新建sheet用来存放二级联动列表 2. 新建省份名称引用 在省市字典下,单击A1单元格,选择公式->名称管理器->新建,名称为省份,引用位置为OFFSET(省市字典!$A$1,0,0,COUNTA(省市字典!$A:$A))&…

字符函数和字符串函数的模拟实现

求字符串长度 strlen 长度不受限制的字符串函数 strcpystrcmpstrcat长度受限制的字符串函数 strnlenstrncmpstrncpystrncat字符串查找 strstrstrtok错误信息报告 strerror内存操作函数 memcpymemmovememsetmemcmp 首先我们来看strlen字符串是以‘\0’为结束标志,str…

【网络原理】IP协议

🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 本博文讲解网络层重点协议之IP协议,主要讲解IP地址的组成、IP地址的分类、IP地址的…