本文目录导读:

在Shell脚本中挂载新磁盘分区,通常需要以下几个步骤,以下是完整的脚本示例和说明:
基础挂载脚本
#!/bin/bash
# 磁盘挂载脚本
DISK="/dev/sdb1" # 要挂载的分区
MOUNT_POINT="/data" # 挂载点
# 检查挂载点是否存在,不存在则创建
if [ ! -d "$MOUNT_POINT" ]; then
mkdir -p "$MOUNT_POINT"
echo "创建挂载点: $MOUNT_POINT"
fi
# 检查分区是否已被挂载
if mount | grep -q "$DISK"; then
echo "分区 $DISK 已挂载"
exit 0
fi
# 挂载分区
mount "$DISK" "$MOUNT_POINT"
# 检查挂载是否成功
if [ $? -eq 0 ]; then
echo "成功挂载 $DISK 到 $MOUNT_POINT"
else
echo "挂载失败"
exit 1
fi
完整的自动化脚本(含分区和格式化)
#!/bin/bash
# 完整的磁盘分区、格式化、挂载脚本
DISK="/dev/sdb"
MOUNT_POINT="/data"
# 创建挂载点
mkdir -p "$MOUNT_POINT"
# 1. 分区
echo "正在对 $DISK 进行分区..."
echo -e "g\nn\n\n\n\nw" | fdisk "$DISK"
# 获取新分区名称
PARTITION="${DISK}1"
# 2. 格式化
echo "正在格式化 $PARTITION 为 ext4..."
mkfs.ext4 "$PARTITION"
# 3. 获取分区的UUID
UUID=$(blkid -s UUID -o value "$PARTITION")
echo "分区UUID: $UUID"
# 4. 挂载
mount "$PARTITION" "$MOUNT_POINT"
# 5. 配置fstab实现开机自动挂载
FSTAB_ENTRY="UUID=$UUID $MOUNT_POINT ext4 defaults 0 2"
if ! grep -q "$UUID" /etc/fstab; then
echo "$FSTAB_ENTRY" >> /etc/fstab
echo "已将挂载信息添加到 /etc/fstab"
fi
echo "完成!分区 $PARTITION 已挂载到 $MOUNT_POINT"
带参数检查的脚本
#!/bin/bash
# 带参数和错误检查的挂载脚本
usage() {
echo "用法: $0 [磁盘设备] [挂载点] [文件系统类型]"
echo "示例: $0 /dev/sdb1 /data ext4"
exit 1
}
# 检查参数
if [ $# -lt 2 ]; then
usage
fi
DISK="$1"
MOUNT_POINT="$2"
FS_TYPE="${3:-ext4}" # 默认ext4
# 检查设备是否存在
if [ ! -b "$DISK" ]; then
echo "错误: 设备 $DISK 不存在"
exit 1
fi
# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
echo "错误: 需要root权限运行此脚本"
exit 1
fi
# 创建挂载点
mkdir -p "$MOUNT_POINT"
# 检查是否已挂载
if mountpoint -q "$MOUNT_POINT"; then
echo "警告: $MOUNT_POINT 已被挂载"
exit 1
fi
# 挂载分区
mount -t "$FS_TYPE" "$DISK" "$MOUNT_POINT"
if [ $? -eq 0 ]; then
echo "成功: $DISK 已挂载到 $MOUNT_POINT"
# 获取文件系统信息
df -h "$MOUNT_POINT"
else
echo "错误: 挂载失败"
exit 1
fi
自动挂载多个分区的脚本
#!/bin/bash
# 定义挂载配置:设备:挂载点:文件系统类型
MOUNT_CONFIG=(
"/dev/sdb1:/data:ext4"
"/dev/sdb2:/backup:xfs"
"/dev/sdc1:/logs:ext4"
)
mount_all_partitions() {
for config in "${MOUNT_CONFIG[@]}"; do
IFS=':' read -r device mount_point fs_type <<< "$config"
echo "处理 $device -> $mount_point"
# 创建挂载点
mkdir -p "$mount_point"
# 检查是否已挂载
if ! mountpoint -q "$mount_point"; then
mount -t "$fs_type" "$device" "$mount_point"
if [ $? -eq 0 ]; then
echo "✓ 成功挂载 $device"
# 添加到fstab
UUID=$(blkid -s UUID -o value "$device")
if [ -n "$UUID" ] && ! grep -q "$UUID" /etc/fstab; then
echo "UUID=$UUID $mount_point $fs_type defaults 0 2" >> /etc/fstab
fi
else
echo "✗ 挂载 $device 失败"
fi
else
echo " $mount_point 已挂载"
fi
done
}
# 执行
mount_all_partitions
注意事项
安全检查和最佳实践
#!/bin/bash
# 安全的挂载脚本
SAFE_MOUNT() {
local DISK="$1"
local MOUNT_POINT="$2"
# 1. 检查磁盘是否已挂载
if mount | grep -q "^$DISK "; then
echo "磁盘 $DISK 已被挂载"
return 1
fi
# 2. 检查文件系统完整性
fsck -n "$DISK"
if [ $? -gt 1 ]; then # 返回码0=正常,1=已修复,>1=错误
echo "文件系统检查失败"
return 1
fi
# 3. 尝试挂载为只读
mount -o ro "$DISK" "$MOUNT_POINT"
if [ $? -eq 0 ]; then
echo "成功以只读模式挂载"
return 0
else
return 1
fi
}
# 使用示例
SAFE_MOUNT "/dev/sdb1" "/mnt/data"
执行权限
# 给脚本添加执行权限 chmod +x mount_script.sh # 以root权限执行 sudo ./mount_script.sh
常见问题处理
#!/bin/bash
# 自动处理常见的挂载问题
fix_mount_issues() {
local DISK="$1"
# 检查dmesg中的错误信息
dmesg | tail -20 | grep -i "$(basename $DISK)"
# 检查系统日志
journalctl -xe | grep -i "mount" | tail -10
# 尝试强制挂载
mount -o force "$DISK" /mnt
# 如果ext4文件系统有问题
fsck.ext4 -f -y "$DISK"
}
这些脚本涵盖了从简单的挂载到完整的分区、格式化和自动挂载的各种场景,根据实际需求选择合适的脚本,并确保在生产环境中充分测试。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播