Manipulação de caracteres de controle no cron / mailx

3

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?

    
por Tom Hunt 15.01.2016 / 17:20

2 respostas

1

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.

    
por 17.01.2016 / 22:28
1

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"
    
por 15.01.2016 / 21:16