如何确保 syslog 在系统突然断电之前捕获尽可能多的日志

如何确保 syslog 在系统突然断电之前捕获尽可能多的日志

我观察到syslog文件 ( /var/log/messages) 似乎没有捕获系统突然关闭之前的最新可能日志。 (我的Linux系统正在运行,然后突然断电。)如何确保syslog在突然关闭之前捕获最大可能的日志?

答案1

最小化或禁用写回缓存及其超时。

/proc/sys/vm/dirty_background_ratio
dirty_ratio
dirty_expire_centisecs
dirty_writeback_centisecs

答案2

系统崩溃有两种方式。

  1. 优雅关闭:在这种情况下,系统中运行的每个进程都有机会写入一些日志,在关闭之前将缓冲区刷新到磁盘上。在这种情况下,/var/log/messages您可以看到

    kernel: Kernel logging (proc) stopped.

    rsyslogd: exiting on signal 15.

  2. 突然关闭:此时应用程序将没有机会写入日志,filesystem也没有机会将数据刷新到磁盘上。但如果这是您面临的情况,您可能需要检查系统硬件,例如HDD , SSD and power supply [ for any unwanted fluctuations ]有效地调试问题。

但作为一种手段,经常将数据从缓存持久化到磁盘。您可以定期尝试运行sync刷新文件系统缓冲区的命令。如需更多结帐man sync

答案3

请注意,如果您在您的系统中使用 rsyslog 旧格式,/etc/rsyslog.conf并使用类似这样的行

*.=info;...  -/var/log/messages

您可以删除-文件名之前的前缀,这将使 syslog 在每次写入后同步文件。看常规文件

相关内容