问题描述:
我在使用clouddrive2把aliyun盘挂在到本地文件,然后通过plex或者emby进行播放,但是配置玩成后使用无问题,但是如果机器需要重启,就会因为启动顺序的问题导致媒体服务器比clouddrive2晚于媒体服务器启动,导致plex和emby无法找到文件。
我尝试过,docker-compose的等待启动,但是因为compose只能控制容器的启动顺序,并不能保证容器内程序启动顺序,所以无奈也是失败了。
如果你的nas不是因为启动顺序导致的不能正常播放,请不用往下看了。
教程内的脚本是30秒检查挂在路径是否存在文件如果不存在则等待30秒再次检查直到检查到文件后执行重启emby或者plex容器。
解决办法:
这里解决办法我针对unirad和使用systemd服务单元的Linux系统
UNRAID:
这里unraid需要使用脚本工具,来进行执行检查脚本。
进入插件管理界面,创建一个脚本,名字随意,这里我写的是check_media
把下面的内容复制进去。
#!/bin/bash while true; do if [ -z "$(ls -A /CloudNAS/Media)" ]; then echo "文件夹为空,等待30秒..." sleep 30 else echo "文件夹中存在文件或文件夹,正在重启Plex Media Server..." docker restart Plex-Media-Server break fi done echo "脚本执行完毕。"
红色字体部分需要修改为你docker容器的名字 emby或者plex,绿色需要修改为你clouddrive2的挂在路径。
把脚本改为仅在阵列启动时候运行。
其他Linux使用systemd:
这里我演示一下在根路径创建一个check_media.sh
脚本,大家如果喜欢在别的路径可以自行修改。
进入根目录 cd / 创建check_media.sh脚本 touch ./check_media.sh 编辑check_media.sh nano ./check_media.sh 填充下面内容 #!/bin/bash while true; do if [ -z "$(ls -A /CloudNAS/Media)" ]; then echo "文件夹为空,等待30秒..." sleep 30 else echo "文件夹中存在文件或文件夹,正在重启Plex Media Server..." docker restart Plex-Media-Server break fi done echo "脚本执行完毕。"
红色字体部分需要修改为你docker容器的名字 emby或者plex,绿色需要修改为你clouddrive2的挂在路径。
创建一个服务文件,来启动。
sudo nano /etc/systemd/system/check-media.service
把下面的内容粘贴进去。
[Unit] Description=Check Media Folder on Boot After=network.target [Service] Type=oneshot ExecStart=/check_media.sh [Install] WantedBy=default.target
注意ExecStart=/check_media.sh的启动路径,这里的路径需要修改为你脚本所在路径才可以。
设置开机启动
sudo systemctl enable check-media.service
启动脚本
sudo systemctl start check-media.service
到此就结束了,可以重启一下看看是否有效。
结尾:
这个办法其实有点笨,如果大家有其他办法,可以在下面留言告诉我,我也学习一下,在这里也简单分享一个解决办法希望能帮助到大家。
评论(3)
不用这么麻烦了,问了cd2作者,这是原话:
cd重启之后挂载点就重新刷新了,emby的docker识别不出来,解决方法是emby映射挂载点的上级目录,以rslave方式映射,这样就可以随便重启cd,emby不会找不到,比如CD挂载在/var/CloudNAS下面,起emby的时候映射参数 -v /var/CloudNAS:/media:rslave
实测完美,不用重启emby/plex
此方法亲测好用,那就不用这么麻烦的写脚本了
好办