什么可能导致日志文件在写入过程中被截断?

什么可能导致日志文件在写入过程中被截断?

在我的工作场所,我继承了管理网络服务器的责任。它是一个 CentOS Linux 虚拟机,在 Amazon AWS EC2 上运行。除了提供网页之外,还会发生大量计划任务、后台处理和数据库操作。

刚才我正在手动运行一个调用 Oracle SQL*Plus 的 Bash 脚本,该脚本读取包含 UPDATE 语句负载的 SQL 脚本并调用刷新物化视图。也许这些都不相关,但我想提供一些背景信息。

Bash 脚本将输出写入 中的日志文件/tmp,我使用该命令tail -f output.log来监视输出。它运行了很长一段时间(也许 20 分钟),输出慢慢出现在我的终端中,但随后我收到一条消息:tail: output.log: file truncatedBash 脚本停止运行。日志文件存在,/tmp但大小为 0。我希望详细查看日志文件以查看报告了哪些数据库错误,这样我就可以修复问题。

我的问题是,什么可能导致此文件截断发生?我不认为文件本身很大——只有 200 行左右。这对我来说是全新的,我真的不知道从哪里开始,或者怀疑什么可能有问题。

答案1

尽管不太可能配置为在 /tmp 中运行,但 logrotate 工具在执行轮换时可能会截断文件。

此外,如果进程在没有附加标志的情况下写入文件,这也会导致它截断文件。在 bash 中,这是单个“>”和双“>>”之间的区别。在其他语言中,它是“a”模式而不是“w”模式。这完全取决于写入日志的进程。

相关内容