Eu tenho um trabalho cron executando um comando php como este:
php /path/to/script.php > dev/null
Isso deve enviar apenas a saída STDERR para o endereço MAILTO. Pelo que pego, o script php não está exibindo nenhuma informação STDERR, mesmo quando seu status de saída é 1.
Como posso obter a saída do comando php (STDOUT) e enviá-la apenas para MAILTO se o status de saída for diferente de zero?
Já considerou crônica de moreutils . Eu acho que faz exatamente o que você quer:
Nas revisões recentes, existe uma
-e
opção para mostrar também a saída completa se algo tiver sido gravado no stderr.fonte
Como a saída é gerada antes que o status de saída seja conhecido, você precisará armazená-la em algum lugar.
Uma possibilidade é armazená-lo em uma variável de shell:
Isso não preserva completamente a saída do script (remove as linhas em branco à direita), mas tudo bem para este caso de uso. Se você deseja preservar as linhas em branco à direita:
Se houver potencialmente muita saída, você pode preferir armazená-la em um arquivo temporário:
fonte