![如何在嵌入式 Linux 设备上通过重新启动使 /var/log 保持不变](https://linux22.com/image/141067/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%B5%8C%E5%85%A5%E5%BC%8F%20Linux%20%E8%AE%BE%E5%A4%87%E4%B8%8A%E9%80%9A%E8%BF%87%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E4%BD%BF%20%2Fvar%2Flog%20%E4%BF%9D%E6%8C%81%E4%B8%8D%E5%8F%98.png)
设想
我在嵌入式Linux系统上。和往常一样/var/log/
是存储所有日志的目录。我有一个名为的目录,/safepath
它是在图像创建过程中创建的,并且位于持久内存上。这意味着我放置的任何内容/safepath
在重新启动会话中都会持续存在。
我希望登录信息/var/log/
不会在每次重新启动时丢失,并希望在重新启动后保持其持久性。所以我想继续/var/log/
做/persists
一个mount --bind /var/log /safepath
我从这个有趣的讨论中读到的这里
问题:
但这样做仍然会导致我丢失/var/log/
.它是否正确?如何强制/var/log/
在重新启动会话中持续存在?
答案1
不确定您是否仍在寻找解决方案,因为问题是 1 年 4 个月前发布的。无论如何,这是一个非常简单的解决方案。
更改配置文件/etc/syslog.conf
(或/etc/rsyslog.conf
)以更改/var/log/messages
为所需的路径。
答案2
最直接的方法是使 /var/log 成为 /safepath/log 或类似内容的符号链接。
答案3
没有真正回答问题。但提供替代方案...向系统日志添加一条规则以将所有消息转发到服务器,例如
*.* @server.host.name
如果你这样做了,你就不需要坚持/var/log
(我的经验是,如果你有持久存储,你总是会填满/var/log
它)。
请注意,您需要在服务器上的系统日志中启用网络模块 - 如何执行此操作取决于您正在运行的系统日志软件。您可能还需要处理防火墙(通常是 UDP 端口 514)。
server.host.name
另请注意,如果您的 syslog 守护程序启动时 DNS 解析器不可用,您可能需要使用 IP 地址。
这样做的一个(我认为很大)优点是您可以将所有嵌入式设备记录到一台服务器,然后所有日志都可以在一个地方使用 - 您应该使用服务器的系统日志软件中的匹配规则来存储来自每个服务器的消息设备分成以源设备命名的单独文件(有时设置起来可能很棘手,但非常值得)。