Descobrimos que o problema estava na configuração de pager de mailx
. Começou usando more
por alguma razão, quando anteriormente usava less
(que faz o escape). Vincular more
a less
novamente restaurou o comportamento antigo.
Eu tenho um cron job que executa um script longo, produzindo muitos resultados. Algumas das saídas são linhas delimitadas por retornos de carro únicos; quando executados a partir da linha de comando, eles fazem com que as linhas sucessivas sobrescrevam umas às outras, fornecendo saída de progresso sem poluir demais o backscroll. No entanto, ao olhar para a saída do cron job, quero ver todas essas linhas sem perder nenhuma.
Até recentemente, quando eu usava mailx
para imprimir os relatórios de saída do cronjob, ele substituía os caracteres de controle pelo vídeo reverso ^M
para realçá-los. Este foi o comportamento que eu queria, pois deixou todas as linhas visíveis. Agora, no entanto, algo desconhecido foi alterado (uma atualização de versão?) E mailx
imprime os caracteres de controle como estão, fazendo com que eles sobrescrevam uns aos outros quando o correio é impresso. Como posso reverter esse comportamento e fazer com que mailx
substitua os caracteres de controle novamente?
Você pode enviar a saída por tr
antes de processá-la ou enviá-la.
./your-script | tr "\r" "\n" | mail
Isso deve substituir todos os caracteres de retorno de carro por feeds de linha.
O mesmo seria possível dentro do crontab:
* * * * 2 /path/to/your-script --args | tr "\r" "\n"