Por que algumas alterações de arquivo não são mostradas na tail -f?

3

Eu tentei seguir o arquivo do histórico do mysql com:

tail -f ~/.mysql_history

em outra janela eu entrei como o mesmo usuário:

mysql -u someotheruser -p

e nenhum dos seguintes comandos são mostrados no meu rabo. quando eu sair do console mysql ainda não há nada mostrado no tail -f , embora, quando eu cat do arquivo histórico, eu vejo, que existem novas entradas no final do arquivo

    
por rubo77 29.11.2013 / 20:17

1 resposta

8

Isso porque mysql recria completamente o arquivo .mysql_history durante sua execução.

Então, quando você executa cat ~/.mysql_history após mysql execução, está procurando um arquivo completamente diferente. Não é o que a tail está lendo.

Você pode verificar isso facilmente com um teste simples:

 $ ls -li .mysql_history 
6685441 -rw------- 1 user user 1570 Sep 15 21:26 .mysql_history
 $ mysql i_test
...
mysql> Bye
 $ ls -li .mysql_history
6685474 -rw------- 1 user user 1592 Nov 29 20:27 .mysql_history

como você pode ver, o inode é diferente. Então essa é a resposta.

    
por 29.11.2013 / 20:30