O vim / vi / nano / etc bloqueia a gravação de arquivos?

2

Como o título sugere, meu colega afirma que usar um editor de texto em vez de um analisador (como menos) bloqueia o arquivo e, no caso de arquivos de log, faz com que o arquivo de log não possa ser gravado.

Eu nunca ouvi falar disso antes e apenas alguns testes iniciais descobrem que isso não é o caso. Além disso, não consigo encontrar nada sobre isso em uma pesquisa do Google para sugerir de onde ele tirou essa ideia.

    
por kemra102 22.09.2014 / 11:31

2 respostas

5

O vim não faz isso, mas eu não tenho certeza sobre os outros. No entanto, há uma maneira muito simples de verificar isso:

Abra duas janelas de terminal (konsole, gnome-terminal, etc), e execute os seguintes comandos no primeiro console:

touch ~/test.txt
vim ~/test.txt

Agora, no seu segundo console, digite o seguinte:

echo "This is a test" >> ~/test.txt

Se o arquivo estiver bloqueado pelo vim, seu comando no segundo console falhará, pois o arquivo não poderá ser gravado. Não vai falhar. Repita com o editor que quiser como passo 2 no primeiro console.

Obviamente, se você tentar salvar quaisquer mudanças em seu primeiro console, você está andando em território desconhecido, mas tanto quanto anexando a arquivos de log ir, isso é seguro.

Alguns editores, como vim, gedit e outros, criar um arquivo "sombra" ao abrir um arquivo para indicar que o arquivo é aberto no editor. Isso não está bloqueando e não faz nada para outros aplicativos em seu sistema - ele serve apenas como uma forma de o editor saber que o arquivo está aberto.

    
por Daniel Andre 22.09.2014 / 11:38
0

vim e vi do ( um exemplo do efeito). Eles não impedem que os arquivos sejam gravados, mas emitem um aviso se você usar outra instância de vi / vim para editar o mesmo arquivo. nano e emacs (v24.3.1) não (pelo menos por padrão). Vou ter que procurar outros editores. De fato, editores mais decentes são realmente capazes de observar mudanças externas no arquivo, sugerindo strongmente que não podem impedir mudanças externas.

Isso talvez seja verdade se o aplicativo usar alguma função de bloqueio (usando O_EXLOCK em sistemas que o suportam ou flock ou qualquer outra coisa no Windows.

    
por muru 22.09.2014 / 11:32