Execução de script via Crontab com resultado diferente?

1

Eu tenho o seguinte script:

#!/bin/bash
/usr/bin/echo q | /usr/bin/htop -C | /usr/bin/aha --line-fix | /usr/bin/html2text -width 999 | /usr/bin/grep -v "F1Help\|xml version=" > htop.txt

Ele apenas captura a saída htop .

Funciona bem se eu executar o script por meio da linha de comando, mas se eu executá-lo via crontab como root:

15 15 * * 1-5 /bin/bash /root/collect_system_stats.sh

o htop.txt terá apenas 1 byte e hexdump mostra:

0000000 000a                                   
0000001

O que eu fiz de errado?

    
por HCSF 17.10.2018 / 15:19

1 resposta

2

Você deve usar o grep com o --line-buffered flag, caso contrário o grep sai após a primeira partida. Eu não tenho uma explicação completa e qualificada para isso, mas foi isso que fez meu script funcionar em um caso semelhante.

Encontrou esta resposta no buffer de linha do grep.

Instalar um cronjob como usuário root com htop pode resultar em uma mensagem de erro:

/usr/bin/htop -C Error opening terminal: unknown

A definição de TERM=xterm no script pode resolver este problema.

    
por 17.10.2018 / 15:25