Onde o cron log por padrão?

1

No Ubuntu 18.04, man cron diz

cron logs its action to the syslog facility 'cron', and logging may be controlled using the standard syslogd(8) facility

Also, the default configuration of cron is controlled by /etc/default/cron which is read by the init.d script that launches the cron daemon. This file determines whether cron will read the system's environment variables and makes it possible to add additional options to the cron program before it is executed, either to config‐ ure its logging or to define how it will treat the files under /etc/cron.d.

Eu adicionei um trabalho em /etc/crontab

* * * * * t ( date && echo $PATH && date )

Eu tento procurar a saída do trabalho e por que não consegui encontrá-lo no syslog? Obrigado.

$ less /var/log/syslog
...
Nov  3 12:21:01 ocean CRON[23992]: (t) CMD (( date && echo $PATH && date ) )
Nov  3 12:21:01 ocean CRON[23985]: (CRON) info (No MTA installed, discarding output)


$ cat  /etc/default/cron
# This file has been deprecated. Please add custom options for cron using
# $ systemctl edit cron.service
# or
# $ systemctl edit --full cron.service
    
por Tim 03.11.2018 / 17:30

1 resposta

7

cron registra suas ações em syslog , com um nível de detalhes dependente do nível de log configurado. Isso não inclui a saída de trabalhos.

Em relação a este último, a manpage diz

When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists).

Como você não tem um MTA configurado, a saída é descartada, conforme indicado nos seus registros.

Se você quiser configurar um MTA, os pacotes MTA no Debian e os derivados vêm com scripts de instalação legais que podem configurar uma configuração simples para você; sudo apt install postfix e siga as instruções.

Como alternativa, você pode redirecionar a saída de suas tarefas cron para o log do sistema usando logger : canalize a saída de suas tarefas para logger -p cron.info (para saída regular) e logger -p cron.err (para erros).

A razão pela qual o cron espera enviar a saída por e-mail é que a saída das tarefas do cron tem uma granularidade que não corresponde ao logger do sistema (os registros não são armazenados por usuário). Cada usuário de um sistema pode configurar tarefas agendadas, mas os usuários não necessariamente têm acesso aos registros do sistema e podem não querer que todos os outros usuários com acesso a esses registros vejam a saída de seus trabalhos. Quando o cron foi projetado, o e-mail era uma maneira sensata de obter a saída de uma tarefa cron para o usuário que a gerenciava: era esperado que os sistemas Unix tivessem uma configuração de e-mail ativa. Hoje em dia é menos óbvio, não porque a adequação do email tenha mudado, mas porque a disponibilidade dele mudou. Em sistemas com e-mail ativo, ainda faz sentido usar isso para a saída do cron; Como alternativa, as tarefas podem gerar arquivos de log por usuário (com redirecionamentos específicos em cada trabalho).

Os timers do sistema não sofrem com esse problema: os timers de usuários fazem login no diário privado por usuário.

    
por 03.11.2018 / 17:40