Linux服务器端自动挂载存储设备(U盘、移动硬盘)

前言

        Linux服务器挂载存储设备需要使用mount,因为服务器的存储通常是固定的,很少存在频繁的插拔USB存储设备的现象 ,使用Linux系统本身是没有较为简单的自动挂载存储设备的方法的。

涉及知识点

udev

udev可以监测USB设备的插入、拔出事件,并且Linux系统支持通过/etc/udev/rules.d/下的.rules文件对USB事件触发关联的动作,比如手动执行命令:mount /dev/sda1 /media/sda1时,.rules文件的内容如下:

ACTION=="add", KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", RUN+="mount /dev/%k /media/%k"

或者不直接调用后台命令,而是调用shell脚本也行:

ACTION=="add", KERNEL=="sd[a-z][0-9]", SUBSYSTEMS=="usb", RUN+="/usr/local/bin/usb-mount.sh %k"

但是,以上的rules文件再mount的时候,挂载失败,原因是udev是systemd-udev调用的,直接使用mount命令是无效的,如果把mount改成systemd-mount,某些系统也mount不成功。

system服务

        系统级的服务进行的mount挂载肯定是成功的,以下是通过编写system服务脚本来实现自动挂载存储设备。

1、创建systemd 服务

/etc/systemd/system/block_service.service
[Unit]
Description=My Block Service
After=local-fs.target[Service]
Type=simple
ExecStart=/usr/bin/block_service.sh[Install]
WantedBy=multi-user.target
/usr/bin/block_service.sh
#!/bin/bash# 定义一个函数来挂载设备
mount_device() {local device=$1local mount_point=$2echo "Mounting $device to $mount_point..."# 假设挂载点为 /mnt/$device,可以根据需求修改挂载点mkdir -p "$mount_point"mount "$device" "$mount_point"if [ $? -eq 0 ]; thenecho "$device mounted successfully at $mount_point."elseecho "Failed to mount $device."fi
}while true; do# 获取挂载状态不为空的设备,过滤掉已挂载的devices=$(lsblk -o NAME,MOUNTPOINT | grep -E "sd[a-z]+[0-9]+.*" | sed 's/^[[:space:]]*└─//g' | awk '$2 == "" {print $1, $2}'|head -n 1)# 检查是否有未挂载的设备if [ ! -z "$devices" ]; thenfor device in $devices; do# 根据设备名称构造设备路径,例如 /dev/sda1device_path="/dev/$device"# 假设挂载点路径为 /media/设备名mount_point="/media/$device"# 调用挂载函数mount_device "$device_path" "$mount_point"doneelseecho "No unmounted devices found."fi# 每5秒钟检查一次sleep 5
done

给脚本赋予执行权限:sudo chmod +x /usr/bin/block_service.sh

2、重新加载 systemd 配置

sudo systemctl daemon-reload

3、启动服务

sudo systemctl start block_service.service

4、设置服务开机自启

sudo systemctl enable block_service.service

5、查看服务状态

systemctl status block_service.service

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

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

相关文章

CentOS7下的vsftpd服务器和客户端

目录 1、安装vsftpd服务器和ftp客户端; 2、配置vsftpd服务器,允许普通用户登录、下载、上传文件; 3、配置vsftpd服务器,允许anonymous用户登录、下载、上传文件; 4、配置vsftpd服务器,允许root用户登录…

系统思考—全局思维

昨天接到一个企业需求,某互联网公司VP希望N-1的核心团队一起学习系统思考,特别是在新业务快速发展的阶段。公司增长势头不错,但如何解决跨部门的协作问题,成为了瓶颈。全局思维就是关键。产品、技术、市场、运营、客服……如何打破…

information_schema是什么?

前言 在现代数据驱动的应用开发中,理解和管理数据库结构变得尤为重要。几乎所有的SQL数据库管理系统(DBMS)都提供了一个名为 information_schema 的虚拟数据库。它不仅是一个了解数据库内部结构的强大工具,也是一个实现跨平台兼容…

MySQL中Seconds_Behind_Master是怎么计算的

目录 1.Seconds_Behind_Master计算方式2.Seconds_Behind_Master 计算方式会存在什么问题3.更好的方式3.1 实现方法3.2 优点在MySQL中,Seconds_Behind_Master是一个用于表示从库(Slave)落后于主库(Master)的时间(以秒为单位)的指标。 1.Seconds_Behind_Master计算方式 其…

Linux 中检查 Apache Web Server (httpd) 正常运行时间的 4 种方法

注:机翻,未校。 4 Ways To Check Uptime of Apache Web Server (httpd) on Linux November 28, 2019 by Magesh Maruthamuthu We all know about the purpose of uptime command in Linux. 我们都知道 Linux 中 uptime 命令的目的。 It is used to c…

活着就好20241225

亲爱的朋友们,大家早上好!🌞 今天是25号,星期三,2024年12月的第二十五天,同时也是第51周的第三天,农历甲辰[龙]年十一月初二十一日。在这晨光熹微的美好时刻,愿那和煦而明媚的阳光照…

《Swift 字面量》

《Swift 字面量》 介绍 在 Swift 编程语言中,字面量是一种表示源代码中固定值的表达方式。字面量可以直接表示数字、字符串、布尔值等基本数据类型,为编程提供了简洁和直观的方式。Swift 支持多种类型的字面量,包括整数字面量、浮点数字面量…

oracle使用imp命令导入dmp文件

需求: 增量导入 tbl_servicelegalclause 表数据(dmp格式)。 导入思路:使用 dba 创建一个 临时库,先将 tbl_servicelegalclause.dmp(增量的数据) 文件导入到 临时库,然后确认临时库数…

美国加州房价数据分析01

1.项目简介 本数据分析项目目的是分析美国加州房价数据,预测房价中值。 环境要求: ancondajupyter notebookpython3.10.10 虚拟环境: pandas 2.1.1 numpy 1.26.1 matplotlib 3.8.0 scikit-learn1.3.1 2. 导入并探索数据集 通用的数据分析…

LabVIEW软件开发的未来趋势

LabVIEW软件开发的未来趋势可以从以下几个方面来分析: ​ 1. 与AI和机器学习的深度结合 趋势:LabVIEW正在向集成AI和机器学习方向发展,尤其是在数据处理、预测性维护和自动化控制领域。 原因:AI技术的普及使得实验和工业场景中的…

使用Amazon Bedrock的无服务器的智能工作流

使用Amazon Bedrock的无服务器的智能工作流 智能工作流基于用户输入处理不可预见的任务,比如发起API调用。无服务器架构可以高效地管理这些任务和不同的工作负载,而无需维护服务器,从而加快部署速度。 你将学习如何通过使用带有保护措施的智能…

近实时”(NRT)搜索、倒排索引

近实时(Near Real-Time, NRT)搜索 近实时(NRT)搜索是 Elasticsearch 的核心特性之一,指的是数据在被写入到系统后,可以几乎立即被搜索和查询到。虽然它不像传统数据库那样完全实时,但它的延迟通…

【NACOS插件】使用官网插件更换NACOS数据库

说明 nacos 2.3.1默认支持mysql和derby数据库,如果想要支持其他数据库,可以通过使用插件方式实现。对于该插件的使用,官方说明文档较为粗略(不过也没问题,实际上整个过程就是很简单,只是使用者想复杂了),网…

Java 深拷贝全面解析

1. 引言 在 Java 编程中,对象之间的复制是一个常见的需求。根据复制的深度不同,我们可以将复制分为浅拷贝和深拷贝。本文将深入探讨 深拷贝(Deep Copy) 的概念、应用场景、具体实现方法及其优缺点,并提供一些实用的建…

Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集FGSM介绍FGSM代码实现FGSM算法实现攻击效果 代码汇总fgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CIFAR10进行分类 Pytorch | 从零构建Vgg…

vue3入门教程:ref函数

基本用法 引入 ref 首先,你需要从 vue 包中引入 ref 函数: import { ref } from vue;创建一个响应式变量 使用 ref 函数来创建一个响应式变量: const count ref(0);这里,count 是一个响应式引用对象,其 .value 属性初…

【IC验证】verilog及systemverilog特殊特性的分析

verilog及systemverilog特殊特性的分析 1.概述2.赋值延迟(0)总结(1)情况一:initial中进行阻塞赋值和非阻塞赋值(不延迟)a代码b 电路图c 结果 (2)时钟a 代码b 电路图c 结果…

Hutool工具包的常用工具类的使用介绍

前言 Hutool 是一个轻量级的 Java 工具类库,提供了非常丰富的工具方法,可以大大减少开发时的重复性工作。它的目标是让 Java 开发更简单、更高效。Hutool 提供了多种常用功能,以下是一些常用工具类的使用介绍: 1. StrUtil - 字符…

考前96天 学习巩固 计算机、数学、英语

2024年12月24日到2025年3月29日共有 96​ 天 一、计算机基础 回顾: 三大思维: 数学 推理/理论 物理 证实/实验 计算机 构造/计算 本质——》抽象/自动化 计算复杂性:空间复杂性、时间复杂性 计算机系统的组成: 1️⃣硬件…

*【每日一题 基础题】 [蓝桥杯 2024 省 B] 好数

[蓝桥杯 2024 省 B] 好数 好数 一个整数如果按从低位到高位的顺序,奇数位(个位、百位、万位……)上的数字是奇数,偶数位(十位、千位、十万位……)上的数字是偶数,我们就称之为“好数”。 给定一…