É seguro abrir um arquivo que está sendo escrito por um script em execução?

20

Estou executando um script de shell que está gravando em um arquivo.
Esse script pode levar muito tempo para ser concluído e eu gostaria de monitorar a saída parcial em vez de esperar que todo o script seja concluído.

É seguro abrir (clicar duas vezes) um arquivo que está sendo escrito pelo script?

    
por None 06.05.2018 / 11:07

4 respostas

41

A leitura do arquivo é segura, embora o clique duplo mencionado provavelmente abra o arquivo em algum editor que ofereça uma opção para fazer alterações e salvá-las. Missclicks acontecem, então eu recomendo comandos que não permitirão que você altere o arquivo.

Estes são exemplos que funcionam no terminal; eles só vão ler o arquivo:

cat file
less file
less +F file
tail -n 5 file
tail -f file
    
por 06.05.2018 / 11:21
13

Contanto que você não esteja escrevendo, tudo bem.

No entanto, recomendo usar

tail -f log_file

em outro terminal.

Este comando irá "seguir" o arquivo log_file e escrever o conteúdo recém-adicionado assim que for atualizado pelo script.

    
por 06.05.2018 / 11:22
1

Não há representante suficiente para adicionar um comentário à resposta de Kamil Maciorowski:

Para alguns arquivos, você precisará de tail -F file para que o seguinte continue por meio de uma rotação. Assistindo syslog por exemplo.

    
por 07.05.2018 / 22:48
-1

Caso o script (ou a implementação da estrutura subjacente) esteja repetidamente abrindo e fechando o identificador de arquivo durante seu trabalho, ele poderá encontrar um erro de violação de compartilhamento no modo de gravação subseqüente aberto pelos seguintes motivos:
1) O script pode solicitar o acesso de gravação no modo exclusivo (excluindo o acesso de leitura simultâneo), portanto, se o seu programa editor / visualizador de arquivos estiver lendo apenas o arquivo, ele poderá disparar uma falha no script de escrita.
2) Além disso, alguns editores / visualizadores de arquivos bloqueiam o arquivo durante todo o tempo em que o arquivo é aberto.

Em conclusão, há possíveis problemas que dependem do programa que você está usando para visualizar o arquivo. E há possíveis problemas decorrentes da implementação (ou da estrutura subjacente) do script que grava no arquivo.

    
por 06.05.2018 / 20:05