Por que o cron requer MTA para registro? Existe alguma vantagem especial nisso? Por que não pode criar um arquivo de log como a maioria dos outros utilitários?
relate perguntas
-
Pergunta sobre arquivos montados em rede
-
Um endereço IP pode terminar em 255 e não ser um endereço IP de transmissão?
-
Auto-SSH funciona manualmente, mas não em segundo plano
-
Incapaz de identificar qual saída de endereço MAC do comando arp ou comando ip está correta
-
Roteador estranho funciona com centos 6 [fechado]
Considere que a forma tradicional "padrão" de registrar dados é syslog , onde os metadados incluídos nas mensagens são o "código de instalação" e o nível de prioridade. O código de instalação pode ser usado para separar fluxos de log de diferentes serviços para que possam ser divididos em diferentes arquivos de log, etc. (mesmo que os códigos de instalação sejam um pouco limitados por terem significados tradicionais fixos).
O que o syslog não tem é uma maneira de separar mensagens para ou de usuários diferentes, e isso é algo que
cron
precisa em um sistema multiusuário tradicional. Não adianta coletar as mensagens dos cron jobs de todos os usuários para um arquivo de log comum onde apenas o administrador do sistema pode vê-las. Por outro lado, o e-mail fornece naturalmente o envio de mensagens para diferentes usuários, por isso é uma escolha lógica aqui. A alternativa seria que o cron fizesse o trabalho manualmente e criasse arquivos de log para o diretório inicial de cada usuário, mas um sistema Unix multiusuário tradicional teria um MTA funcional, então implementá-lo no cron teria sido principalmente um exercício inútil.Em sistemas modernos, pode haver escolhas alternativas, é claro.
Eu suponho que por "registrar" você quer dizer armazenar a saída real dos trabalhos. A execução de jobs já está registrada no cron log in
/var/cron/log
(o caminho pode ser diferente entre os sistemas). Não há MTA necessário para este log.Um cron job é executado como o usuário do qual o crontab faz parte.
No caso geral, não há garantia de que esse usuário seja capaz de criar arquivos no sistema (um usuário pode não ser um usuário interativo), especialmente sob a
/var
hierarquia em que os logs geralmente são criados. A maneira mais segura de notificar o usuário sobre erros e outras saídas de um trabalho é, portanto, coletá-los e enviá-los por e-mail ao usuário. Isso também permitiria que o usuário configurasse o redirecionamento de e-mail para a conta para poder ver, por exemplo, erros em seu local preferido.Se o usuário quiser salvar a saída de um trabalho em arquivo, pode fazê-lo com um simples redirecionamento no crontab:
Isso seria executado a
"$HOME/scripts/myscript"
cada duas horas, na hora, e salvaria toda a saída em arquivos"$HOME/logs/myscript.log"
. Nenhum e-mail seria criado executando este trabalho, pois toda a saída é redirecionada. Sem o2>&1
, as mensagens de erro ainda seriam enviadas por e-mail.Isso permite que o usuário escolha para onde a saída vai.