如何转储写入磁盘的数据

如何转储写入磁盘的数据

问题 :

如何将从应用程序写入的数据(字节流)转储到文件系统?(类似于 tcpdump,但用于 IO/文件)。

理想情况下,它应该能够在写入时“附加”并转储流,而无需对应用程序进行特定配置。

语境 :

我有一个 Java 应用程序部署在某些服务器上。此应用程序使用 JCL+Log4j 来记录各种技术内容。

在其中一些上,我遇到了一个相当不常见的问题:日志文件经常被二进制数据污染。

相同的应用程序,相同的配置,相同的硬件,相同的操作系统......不同的行为

我的日志都在这里:如果我用“字符串”处理日志文件,一切都会恢复正常,但正如我所说,90%的二进制垃圾,预处理文件需要花费大量的时间。

目标 :

能够确定问题出在 Java 应用程序/JVM 还是操作系统/硬件上

答案1

使用 strace,例如:

strace -p PID -e write -s 1024

它将转储进程的写入系统调用。最大字符串大小为 1024。

相关内容