Por que o / dev / null 2 & 1 não funciona?

1

Executando o Ubuntu 16.04 Eu adicionei o seguinte ao / etc / crontab:

* * * * * root wget https://www.exmaple.org/bus/ >/dev/null 2>&1

O cron job é executado corretamente, mas o resultado é gravado como um arquivo em / root / em vez de ser descartado como esperado.

    
por Quoi 04.06.2017 / 01:21

1 resposta

2

>/dev/null descarta a saída padrão do comando. Não há nenhum em seu exemplo. 2>&1 faz com que o erro padrão do comando seja descartado. No seu exemplo, isso contém informações de status e erro exibidas por wget.

Se o URL for válido (como em, se o servidor retornar algum conteúdo para a página), wget salvará o conteúdo da página em um arquivo. Esta não é a saída padrão do wget exibida nem o erro padrão do wget: são alguns dados que o wget salva em um arquivo. Isso não é afetado por redirecionamentos, pois o wget está enviando para um arquivo que é aberto pelo nome, não para um fluxo padrão.

Se você não quiser salvar a saída em qualquer lugar, informe ao wget para salvá-la em /dev/null :

wget -O /dev/null …

Note que os erros de um cron job são úteis, mas o Ubuntu os descarta por padrão. A saída de uma tarefa cron (saída padrão e erro padrão) é enviada por correio local; veja Como os administradores devem ler as mensagens do root? para saber como para fazer esse trabalho. Irritantemente, wget produz muita saída, mesmo quando tudo está funcionando bem, não tem opção para exibir apenas erros. Você pode contornar isso salvando a saída e descartando-a se o comando for bem-sucedido:

trace=$(wget … 2>&1) || echo "$trace" >&2
    
por 04.06.2017 / 01:34