2015-09-29 67 views
1

我用tail -f filename监视一个文本文件,并使用vi编辑器在文件末尾添加一行。linux命令“tail -f filename”不起作用

但保存文件后,我没有看到'tail -f'正在监视的终端的更新。

什么问题?是vi编辑器有缓冲区什么的?

+0

多少文字是你用vi添加?它可能不是vi,它可能是OS缓冲。 –

+0

尝试将“echo”或“cat”文本改为结尾。 Vim实际上写了一个新文件。 – Keith

回答

2

VI/VIM将文件复制到一个临时文件,VIS:

[[email protected] ~]# lsof | grep temp3 tail 29146 root 3r REG 253,0 2474 2228230 /root/temp3 vim 29260 root 4u REG 253,0 12288 2228273 /root/.temp3.swp

所以你拖尾该文件列出,并.temp3.swp的vim创建。

一旦你保存文件时,Vim删除原始并重命名.temp3.swp文件temp3.swp

lsof的会告诉你拖尾已删除的文件:

[[email protected] ~]# lsof | grep temp3 tail 29146 root 3r REG 253,0 2474 2228230 /root/temp3~ (deleted)

统计会告诉你新的文件具有高于.temp3.swp文件的索引节点:

[[email protected] ~]# stat temp3 File: 'temp3' Size: 2482 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 2228273 Links: 1