为什么minidlna数据库没有被刷新?

Dip*_*pen 43 dlna

我正在开发一个MiniDLNA服务器,通过WiFi流媒体.现有文件正确显示.但是,当我向媒体文件夹添加新文件时,MiniDLNA客户端不会更新更改.我也尝试重新启动服务器,但它没有反映出更改.

我改变了inotify_interval = 60但它还没有更新files.db哪个是MiniDLNA媒体列表数据库.如果我删除此数据库并重新启动服务器,则会显示更改.

有谁知道问题可能是什么?

Ser*_*ndt 41

总之,让MiniDLNA重新扫描所有媒体文件的最可靠方法是发出以下命令集:

$ sudo minidlnad -R
$ sudo service minidlna restart
Run Code Online (Sandbox Code Playgroud)

重新扫描服务器的客户端脚本

但是,MiniDLNA经常会在服务器上运行.以下是在此类服务器上请求重新扫描的客户端脚本:

#!/usr/bin/env bash
ssh -t server.on.lan 'sudo minidlnad -R && sudo service minidlna restart'
Run Code Online (Sandbox Code Playgroud)

  • `minidlna`在我的设置上被命名为`minidlnad` (4认同)
  • 使用**systemd**,`$ sudo service minidlna restart`将成为`$ sudo systemctl restart minidnla.service`. (3认同)
  • 其实我建议不要使用`sudo minidlna -R`.这可能并且很可能会导致文件由`root`创建/拥有.正确的init脚本将在其自己的用户下运行服务器.某些系统上可用的替代方法是向init-script或systemd服务发出`force-restart`或`force-reload`. (3认同)
  • 添加新文件时,没有办法自动重新扫描吗? (2认同)

uno*_*ode 29

AzP已经提供了大部分信息,但有些信息不正确.

首先,没有这样的选择inotify_interval.存在的唯一选择是notify_interval与之无关inotify.

因此,澄清notify_interval一下,控制(迷你)dlna服务器在网络中宣布自己的频率.默认值895意味着它将每15分钟宣布一次,这意味着客户最多需要15分钟才能找到服务器.我个人使用1-5分钟,具体取决于客户在网络中的波动性.

在获取minidlna以查找已添加的文件方面,有两种选择:

  • 第一个相当于删除文件,files.db并在传递-R参数时重新启动minidlna ,这会强制完全重新扫描并从头开始构建数据库.从版本1.2.0开始,现在还有-r执行重建操作的参数.这将保留任何现有数据库,并分别删除和添加旧记录和新记录.
  • 第二种是inotify通过设置inotify=yes和重启minidlna 来依赖事件.如果inotify设置为=no,则更新文件数据库的唯一选项是强制完全重新扫描.

此外,为了inotify工作,文件系统必须支持inotify事件,而在大多数远程文件系统中并非如此.如果你有通过NFS运行的minidlna,它将不会看到任何inotify事件,因为它们是在服务器端生成的,而不是在客户端生成的.

最后,即使inotify正在运行并且受文件系统支持,运行minidlna的用户必须能够读取该文件,否则将无法检索必要的元数据.在这种情况下,日志文件(通常/var/log/minidlna.log)应包含有用的信息.

  • @AzP,这是你说的不正确的事情之一.无论`inotify`是`on`还是`off`,都会使用`notify_interval`.这个选项与`inotify`无关*. (3认同)
  • 在检查了 `/var/log/minidlna.log` 后,我发现了一个关于 `Inotify max_user_watches [8192] 低于或接近使用的手表数量的警告......`并通过编辑我的 `/etc/ 增加了 `max_user_watches` sysctl.conf`,添加`fs.inotify.max_user_watches=524288`([值大于65536](https://ubuntuforums.org/showthread.php?t=2073540))并运行`sysctl -p`。在“service minidlna restart”之后一切正常(Ubuntu 16.04)! (3认同)

AzP*_*AzP 5

MiniDLNA使用inotifyLinux内核中的一项功能,用于发现文件系统上特定文件和目录的更改.要使其工作,您需要在内核中启用inotify支持.

notify_interval,如果你有残疾的inotify(注意缺乏领先的"I"),据我所知,只有使用.要使用notify_interval(即让服务器"轮询"文件系统以进行更改而不是自动通知它们),您必须禁用该inotify功能.

这是我的看法/etc/minidlna.conf:

# set this to no to disable inotify monitoring to automatically discover new files
# note: the default is yes
inotify=yes
Run Code Online (Sandbox Code Playgroud)

确保在内核中启用了inotify.

如果它未启用,并且您不想启用它,则强制重新扫描是强制MiniDLNA重新扫描驱动器的方法.