通过 truncate -s 0 命令清空日志文件中的内容后写入新的日志,用 vim 打开日志文件会发现开头有很多 ^@ ,请问如何解决?
truncate -s 0
^@
日志文件是不是被其他进程打开了而没有关闭
先用 fuser 2333.log 看看是不是文件正在被其他进程使用
fuser 2333.log
@不如隐茶去: 是 asp.net core 应用的 serilog 在访问这个 文件,我是想实现在不重启应用的情况下清空日志文件
那就可以解释了为什么指针是不是在文件首的情况。
^@就是'\0'表示空字符,出现这个问题应该是因为清空日志文件后,指针停留在文件中的某个位置,然后写入文件就从这个指针开始写,导致指针前面的部分全部用空字符填充。
'\0'
怎么把指针移至文件的开始?
@dudu: 不会
日志文件是不是被其他进程打开了而没有关闭
– 不如隐茶去 5年前先用
– 不如隐茶去 5年前fuser 2333.log
看看是不是文件正在被其他进程使用@不如隐茶去: 是 asp.net core 应用的 serilog 在访问这个 文件,我是想实现在不重启应用的情况下清空日志文件
– dudu 5年前那就可以解释了为什么指针是不是在文件首的情况。
– Shendu.CC 5年前