按照楼主的示例有个问题,service会一直执行,不停的挂载,要么在脚本中控制,要么在service中控制
我的脚本,供参考,功能为挂挂载多个挂载点,全部成功就算成功,有一个失败就会重试直到成功,成功后不会在执行,避免重复挂载
脚本示例
#!/bin/bash
# 记录日志
log_file="/var/log/mount-bind.log"
echo "$(date): 开始执行挂载脚本" >> "$log_file"
# 定义挂载操作,使用数组可以更方便地管理多个挂载点
# 每个挂载点用空格分隔源和目标,这里假设有多个挂载操作
mount_operations=(
"/vol02/1002-0-5032078c/同步目录/飞牛/wangxin /vol1/1002"
"/vol02/1002-0-5032078c/同步目录/飞牛/denglan /vol1/1003"
# 添加更多的挂载操作...
)
all_success=true
for operation in "${mount_operations[@]}"; do
# 将字符串分割成源和目标
read source target <<< "$operation"
# 检查目标目录是否存在,如果不存在则创建
if [ ! -d "$target" ]; then
mkdir -p "$target"
echo "$(date): 创建目录 $target" >> "$log_file"
fi
# 执行挂载命令
if /bin/mount --bind "$source" "$target"; then
echo "$(date): 成功挂载 $source 到 $target" >> "$log_file"
else
echo "$(date): 挂载失败: $source 到 $target" >> "$log_file"
all_success=false
fi
done
if [ "$all_success" = true ]; then
echo "$(date): 所有挂载操作成功完成" >> "$log_file"
exit 0
else
echo "$(date): 部分挂载操作失败" >> "$log_file"
exit 1
fi
mnt.service
示例
[Unit]
Description=mnt service
After=network.target
# 确保在网络和远程文件系统就绪后执行
After=local-fs.target remote-fs.target
# 明确声明依赖关系
Requires=remote-fs.target
[Service]
Type=oneshot
ExecStart=/home/wangxin/mnt.sh
User=root
Restart=on-failure
RestartSec=10s
[Install]
WantedBy=multi-user.target
日志示例
Thu Sep 11 07:56:16 PM CST 2025: 创建目录 /vol1/1002
Thu Sep 11 07:56:16 PM CST 2025: 挂载失败: /vol02/1002-0-5032078c/同步目录/飞牛/wangxin 到 /vol1/1002
Thu Sep 11 07:56:16 PM CST 2025: 创建目录 /vol1/1003
Thu Sep 11 07:56:16 PM CST 2025: 挂载失败: /vol02/1002-0-5032078c/同步目录/飞牛/denglan 到 /vol1/1003
Thu Sep 11 07:56:16 PM CST 2025: 部分挂载操作失败
Thu Sep 11 07:56:26 PM CST 2025: 开始执行挂载脚本
Thu Sep 11 07:56:26 PM CST 2025: 挂载失败: /vol02/1002-0-5032078c/同步目录/飞牛/wangxin 到 /vol1/1002
Thu Sep 11 07:56:26 PM CST 2025: 挂载失败: /vol02/1002-0-5032078c/同步目录/飞牛/denglan 到 /vol1/1003
Thu Sep 11 07:56:26 PM CST 2025: 部分挂载操作失败
Thu Sep 11 07:56:37 PM CST 2025: 开始执行挂载脚本
Thu Sep 11 07:56:37 PM CST 2025: 挂载失败: /vol02/1002-0-5032078c/同步目录/飞牛/wangxin 到 /vol1/1002
Thu Sep 11 07:56:37 PM CST 2025: 挂载失败: /vol02/1002-0-5032078c/同步目录/飞牛/denglan 到 /vol1/1003
Thu Sep 11 07:56:37 PM CST 2025: 部分挂载操作失败
Thu Sep 11 07:56:47 PM CST 2025: 开始执行挂载脚本
Thu Sep 11 07:56:47 PM CST 2025: 成功挂载 /vol02/1002-0-5032078c/同步目录/飞牛/wangxin 到 /vol1/1002
Thu Sep 11 07:56:47 PM CST 2025: 成功挂载 /vol02/1002-0-5032078c/同步目录/飞牛/denglan 到 /vol1/1003
Thu Sep 11 07:56:47 PM CST 2025: 所有挂载操作成功完成