我观察到syslog
文件 ( /var/log/messages
) 似乎没有捕获系统突然关闭之前的最新可能日志。 (我的Linux系统正在运行,然后突然断电。)如何确保syslog
在突然关闭之前捕获最大可能的日志?
答案1
最小化或禁用写回缓存及其超时。
/proc/sys/vm/dirty_background_ratio
dirty_ratio
dirty_expire_centisecs
dirty_writeback_centisecs
答案2
系统崩溃有两种方式。
优雅关闭:在这种情况下,系统中运行的每个进程都有机会写入一些日志,在关闭之前将缓冲区刷新到磁盘上。在这种情况下,
/var/log/messages
您可以看到kernel: Kernel logging (proc) stopped.
rsyslogd: exiting on signal 15.
突然关闭:此时应用程序将没有机会写入日志,
filesystem
也没有机会将数据刷新到磁盘上。但如果这是您面临的情况,您可能需要检查系统硬件,例如HDD , SSD and power supply [ for any unwanted fluctuations ]
有效地调试问题。
但作为一种手段,经常将数据从缓存持久化到磁盘。您可以定期尝试运行sync
刷新文件系统缓冲区的命令。如需更多结帐man sync
答案3
请注意,如果您在您的系统中使用 rsyslog 旧格式,/etc/rsyslog.conf
并使用类似这样的行
*.=info;... -/var/log/messages
您可以删除-
文件名之前的前缀,这将使 syslog 在每次写入后同步文件。看常规文件。