Supondo que você quis dizer
cat /dev/null > file_log.txt
a resposta é que o processo que tem o arquivo aberto para escrita o fez sem O_APPEND
, ou definiu o offset no arquivo arbitrariamente, caso em que um arquivo esparso é criado. Este é um arquivo que contém "buracos", ou seja, o sistema "sabe" que existem grandes regiões com zeros, que não são realmente gravados no disco. É por isso que du
e ls
discordam - du
analisa o uso real do disco, enquanto ls
usa simplesmente stat()
para extrair o atributo de tamanho de arquivo.
Solução: reinicie o processo. Se possível, reescreva a parte em que o arquivo está aberto para usar O_APPEND
(ou modo a
ao usar fopen()
)