stdout e stderr do script não são redirecionados quando executados pelo cron

3

./ script & > > log.txt

Eu recebo um bom arquivo de log, mas se eu tiver o mesmo comando executado pelo cron, digamos que o crontab tenha esta aparência:

* * * * * '/home/user/script &>> /home/user/log.txt'

o log.txt será apenas vazio, eu tentei "e 'e' e nenhum sinal para incluir o comando, alguma idéia de porque os fluxos não serão gravados no arquivo?

    
por gletscher 28.03.2010 / 23:17

2 respostas

6

Provavelmente, o shell que o cron usa não suporta o operador de redirecionamento de taquigrafia &>> que o Bash suporta.

Você deve usar o formulário portátil que é suportado no shell Bourne e em outros:

* * * * * /home/user/script >> /home/user/log.txt 2>&1

Isso diz "anexar a saída padrão (descritor de arquivo 1) ao arquivo e enviar erro padrão (descritor de arquivo 2) para o mesmo local".

E você não precisa de citações.

    
por 29.03.2010 / 00:10
1
  1. Não inclua nenhuma cotação para o comando no crontab.

  2. Considere executar um script de configuração de ambiente que faça seu próprio redirecionamento, em vez de confiar no cron para fazer isso.

Na minha experiência, quanto menos houver no arquivo crontab, melhor. Meus arquivos crontab consistem nos controles de tempo mais um nome de comando absoluto simples (ksh) e o comando que deve executar:

#   @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
#   Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min     Hour    Day     Month   Weekday Command
#-----------------------------------------------------------------------------
0        *       *       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/hourly
1        1       *       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/daily
23       1       *       *       1-5     /usr/bin/ksh /work1/jleffler/bin/Cron/weekday
2        3       *       *       0       /usr/bin/ksh /work1/jleffler/bin/Cron/weekly
21       3       1       *       *       /usr/bin/ksh /work1/jleffler/bin/Cron/monthly
    
por 28.03.2010 / 23:32