Dica Rápida - Linux - Como Limpar O Conteúdo De Um Arquivo Texto Sem Abrir O Mesmo

| Comments

Arquivos de log, por vezes, podem ser muito extensos. Tão extensos que torna-se praticamente impossível a leitura de seu conteúdo com um editor de textos como o vim ou vi. Além disso, muitos deles podem chegar a ocupar Gigas e mais Gigas de seu espaço em disco, o que pode acabar sendo um desperdício de espaço em seu sistema de arquivos.

Hoje passei por um problema deste tipo. Ao atualizar meu Arch Linux, percebi que comecei a receber erros devido ao meu espaço em disco o qual era apontado como “insuficiente”. O fato é que é muito comum em distribuições Linux utilizarmos um particionamento de forma a isolarmos um pouco cada partição para fins específicos. No meu caso, verifiquei que a minha partição raíz estava mesmo completamente cheia.

1
2
3
 [kalib@tuxcaverna ~]$ df -h /
 Sist. Arq.      Tam. Usado Disp. Uso% Montado em
 /dev/sda3        30G   30G   0M  100% /

Para resolver meu problema comecei limpando os pacotes que ficam em cache desnecessariamente através do pacman:

1
 [kalib@tuxcaverna ~]$ pacman -Sc

Em seguida resolvi verificar quanto de espaço eu estava consumindo com logs de sistema:

1
2
 [root@tuxcaverna ~]# cd /var/log
 [root@tuxcaverna ~]# du -h .

O comando acima me mostrou que meu diretório de logs estava consumindo mais de 13G. Insano, certo? Na verdade, não. É comum que ao longo dos meses, ou mesmo anos, o sistema acumule logs e mais logs. Uma quantia absurda e, muitas vezes, desnecessária de informações. Como trata-se de meu notebook pessoal e não estou tendo qualquer erro em meu sistema, resolvi limpar estes logs, portanto o primeiro passo é identificar os maiores arquivos. No meu caso foram os arquivos:

1
 everything.log    kernel.log    daemon.log

Uma vez que cada um destes arquivos possuía mais de 3G, resolvi limpá-los completamente. A saída mais rápida e KISS? /dev/null neles.

1
 [root@tuxcaverna ~]# cat /dev/null >everything.log

Isto limpará completamente o conteúdo do arquivo de texto informado. Vejamos o simples exemplo a seguir:

Vamos criar um arquivo de texto vazio chamado teste.txt.

1
 [root@tuxcaverna ~]# touch teste.txt

Em seguida, vamos inserir algum conteúdo no mesmo:

1
 [root@tuxcaverna ~]# echo "Testando" >teste.txt

Verifiquemos se meu texto realmente foi inserido no arquivo:

1
2
 [root@tuxcaverna ~]# cat teste.txt
 Testando

Tudo certo. Agora vamos limpar o mesmo:

1
 [root@tuxcaverna ~]# cat /dev/null >teste.txt

Agora, vamos confirmar se o mesmo foi mesmo zerado:

1
2
 [root@tuxcaverna ~]# cat teste.txt
 [root@tuxcaverna ~]#

Missão cumprida. Apenas para constar a diferença:

1
2
3
 [kalib@tuxcaverna ~]$ df -h /
 Sist. Arq.      Tam. Usado Disp. Uso% Montado em
 /dev/sda3        30G   16G   13G  56% /

Comments