Por que 'tail -f data_log | grep keyword 'dentro da sessão do tmux pode levar ao esgotamento do disco rígido?

0

A cena é como, ontem eu preciso verificar algum erro de API. Então eu entrei no servidor de log. Eu abri uma sessão do tmux, para poder me reconectar ao meu trabalho mais tarde.

Eu digitei tail -f data_log | grep keyword para depurar. Mas não deu certo naquele momento. Então decidi manter esta sessão do tmux para mais tarde e fechei o painel de terminais.

Hoje, meu colega me disse que a sessão do tmux com tail -f data_log | grep keyword em execução causou esgotamento do disco rígido nesse servidor de log. O que me deixa envergonhada, auto-culpada e confusa.

Como tail -f abre seu próprio descritor de arquivo stdout e redireciona o conteúdo recém-adicionado de data_log para a tela do terminal.

Este descritor de arquivo stdout pode receber uma quantidade infinita de dados?
Onde esse descritor de arquivo armazena essa grande quantidade de dados? Existe um arquivo real para armazená-los?
O tmux tem alguma coisa a ver com esse problema?
Se o tmux não tem nada a ver com este problema, se eu abri um terminal rodando tail -f my_log e usei o crontab para adicionar 1 byte ao meu_log por segundo, significa que cada segundo de 2 bytes será armazenado no meu disco? cauda e 1 para tarefa crontab)?

    
por Zen 06.06.2018 / 05:55

1 resposta

2

É possível que:

  1. data_log obtém uma grande quantidade de dados gravados nele todos os dias.
  2. Ele é girado, possivelmente usando logrotate . As etapas usuais em rotação envolvem pelo menos renomeação de arquivos, seguida de compactação e exclusão do log descompactado.
  3. tail -f (GNU pelo menos, provavelmente outros também), por padrão continua a ler o arquivo antigo, mesmo se ele foi movido ou excluído. Se um arquivo foi excluído, mas um programa possui um identificador de arquivo aberto, o Linux mantém os dados no disco, marcando o espaço indisponível.
  4. Isso significa que a rotação de log não resultará em aumento de espaço em disco como deveria, mas sim que o log compactado e o log descompactado, mas excluído, estão ambos ocupando espaço.

Faça isso por tempo suficiente e é possível que seu servidor fique sem espaço, apesar de medidas como a rotação de logs ou tentativas de outros usuários excluírem manualmente os registros.

    
por 06.06.2018 / 06:50