前段时间发现有个写日志的程序(实时写日志),在我去修改了日志文件里内容的时候,写日志的程序就不写了,重启写日志程序才能继续写。这时候就意识到这个日志文件可能就不是之前那个日志文件,iNode已经变了,虽然日志文件还是同一个名字。
其实不止修改,用vim打开后啥也不干,:wq
直接退出也会写不了日志。
为了验证用lsof -p pid
去看了程序调用的文件,发现文件后面带了个delete状态,果然是已经被删掉了。
为什么说:wq和ZZ命令还是有区别的,因为用ZZ命令退出的时候日志文件还是可以继续写而:wq
不行。:wq
或者sed
之类的命令会重新新建一个同名文件,把之前的文件删了。再默认的写文件模式上采用了写新文件,之后覆盖到老文件的方式。
:wq
是一定保存一次ZZ
是修改了才会保存