我们定期从 cron 运行测试脚本,在启动任何操作之前,此测试脚本会清除 /var/log/messages ,并在执行操作后分析 /var/log/messages 中的数据。这不是期望的行为,因为在测试开始时涉及清除设备日志。
如何仅在测试运行之间捕获设备日志。那么该测试只能分析该数据吗?
答案1
也许有不那么笨拙的方法,但你可以跑
tail -0f /var/log/messages > captured_logs
当你的测试脚本运行时;或使用
logger -i "Test started"
# ...test script...
logger -i "Test stopped"
(看logger
)以及grep
完整日志中之后的部分。当心,我不确定日志翻转时会发生什么,所以更稳健解决方案可能是读取syslogd
s 插座(-p
选项),例如socat
socat UNIX-CLIENT:/var/run/log STDOUT
比 STDOUT 更复杂的东西可能更适合您的需求。 (您甚至可以syslogd
在特定时间运行自己的实例,配置(-a
选项)以从此套接字捕获日志。)