前言
折腾自动追剧的全家桶方案其实已经有一段时间了,由于 docker的强大,本人的全家桶方案基本都是依赖于 docker实现的,但是随之而来也暴露一个问题,就是部分容器是依赖于 rclone 挂载实现的功能,一旦重启 VPS 的话, rlone mount 服务的启动完成需要一定的时间,这时候如果 docker 容器服务比 rclone mount 服务先启动的话,会出现容器识别不到挂载目录的情况,即便 rclone mount 服务最后完成启动也不行,此时的解决方案只有重启 docker 容器。之前一直没尝试解决的原因是,觉得碰到这种情况下重启下容器就好,加上大佬们总是不理解说为啥你的 VPS 老是要重启,我觉得这个问题只有小白能和我感同身受了
。
解决方案
解决方案其实也很简单,只需要一个脚本,我们让他开机启动的是检测下你的挂载目录是否有内容,一旦有内容的话,则重启 docker 容器,如果没内容的话,则循环检测,直到 rclone 挂载成功。当然,脚本简单归简单,我自己可写不出来,这里仍然贴下 翔翎 大佬的作品:
#!/bin/bash
dir1=/mnt/sp01
dir2=/mnt/onedrive
while true; do
sleep 5s
if [[ -d $dir1 ]] && [[ -d $dir2 ]]; then
if [[ `ls $dir1` != "" ]] && [[ `ls $dir2` != "" ]]; then
docker restart emby
docker restart nas-tools
docker restart chinesesubfinder
break
else
echo "No path!"
fi
fi
done保存为 rclone.sh 上传到 VPS 根目录,给与权限
chmod +x rclone.sh手动执行下看有无报错:
bash rclone.sh如提示 docker restart emby done 等字样,表示脚本无问题。
加入开机启动,首先将脚本移动到 /etc/init.d并设置开机启动 :
mv rclone.sh /etc/init.d
sudo update-rc.d rclone.sh defaults如果要移除启动项的话:
sudo update-rc.d -f rclone.sh remove搞定,收工!
评论