Unix 对文件i/o所做的更改不可见

Unix 对文件i/o所做的更改不可见,unix,transactions,io,Unix,Transactions,Io,我有一个python脚本,它打开一个文件,编写一堆东西,然后关闭它。我通过连接到ssh来运行这个python文件。另一方面,我有另一个ssh终端连接到同一台机器,我希望通过运行的脚本监视对文件的更改/写入。然而,当我使用cat“file_name”或类似的东西时,文件似乎是空的。只有在脚本终止后,我才能看到这些内容 首先,这与事务的原子性属性有关吗 第二,是否有办法实现对我的文件的监控?您的文件有多大 如果它很小(对于small的一些模糊定义,但可能小于4kib),那么Python脚本很可能正在

我有一个python脚本,它打开一个文件,编写一堆东西,然后关闭它。我通过连接到ssh来运行这个python文件。另一方面,我有另一个ssh终端连接到同一台机器,我希望通过运行的脚本监视对文件的更改/写入。然而,当我使用cat“file_name”或类似的东西时,文件似乎是空的。只有在脚本终止后,我才能看到这些内容

首先,这与事务的原子性属性有关吗

第二,是否有办法实现对我的文件的监控?

您的文件有多大

如果它很小(对于small的一些模糊定义,但可能小于4kib),那么Python脚本很可能正在缓冲它在内存中所做的更改,并且只有在关闭文件时才写入磁盘

如果您的文件很大(比如说,大于64kib),那么这就不是解释了。在中等尺寸的情况下,这相对不太可能成为解释;在真正的小尺寸,如1千磅或更少,这是非常合理的


考虑寻找刷新文件更改或内存映射文件的方法。

谢谢这种情况,使用f=open(FileName,'a',0)而不是f=open(tmpLogFileName,'a')创建无缓冲文件解决了问题。谢谢