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() )