por que o daemon do cron faz esforços para registrar a saída ao executar uma tarefa cron, em vez de usar o redirecionamento dentro da tarefa?

0

A manpage do cron diz

When executing commands, any output is mailed to the owner of the crontab (or to the user specified in the MAILTO environment variable in the crontab, if such exists). Any job output can also be sent to syslog by using the -s option.

Estou tentando entender por que o daemon do cron faz esforços para registrar a saída ao executar um cron job. Parece-me que usar o redirecionamento no trabalho também funcionará?

"qualquer saída" inclui os dois

  • a saída gerada pelo job executado pelo daemon do cron
  • e a saída gerou o próprio daemon do cron?

Se

  • "qualquer saída" é apenas a saída gerada pelo job executado pelo daemon cron e não a saída gerada pelo próprio daemon cron, e

  • nós nos importamos apenas com o conteúdo da saída, não com qual arquivo a saída será gravada,

podemos apenas especificar na linha de trabalho no arquivo cronab para redirecionar a saída do (s) comando (s) no trabalho para qualquer arquivo, em vez de usar os recursos loggin / email do cron (por exemplo, opção -s e os gostos)?

30 18 * * * rm /home/someuser/tmp/* > /home/t/mycron.log  2>&1

Obrigado.

    
por Tim 03.11.2018 / 02:39

1 resposta

1

"Qualquer saída" aqui significa "qualquer coisa enviada para saída padrão ou saída de erro padrão pelo (s) comando (s) no trabalho."

Se o comando a ser executado incluir um redirecionamento da saída padrão para um arquivo, não haverá saída padrão proveniente desse comando como um todo, já que ele será redirecionado para o arquivo.

A saída gerada pelo trabalho é considerada como propriedade de quem quer que seja o proprietário do trabalho; as mensagens de log sobre a execução do trabalho (ou seja, o que foi executado, quando, em cuja conta e qual foi o código de resultado do trabalho) criadas pelo próprio daemon do cron são consideradas propriedade do administrador do sistema.

A opção -s da tensão "cronie" do daemon cron faz com que a saída da tarefa seja também gravada no syslog, para torná-la mais facilmente disponível para o administrador do sistema. Também pode ser útil em sistemas sem serviço de e-mail local em funcionamento.

Então, sim, você pode redirecionar a saída. Mas normalmente você deve ter o cuidado de redirecionar a saída de erro padrão também:

30 18 * * * rm /home/someuser/tmp/* > /home/t/mycron.log 2>/home/t/mycron.errors.log

... ou se você quer a saída padrão e a saída de erro padrão no mesmo arquivo, você pode usar este atalho:

30 18 * * * rm /home/someuser/tmp/* > /home/t/mycron.log 2>&1

(Você verá que um comando padrão rm geralmente não produzirá nada na saída padrão, e qualquer erro entrará na saída de erro padrão. É por isso que é necessário capturar os dois tipos de saída.) / p>     

por 03.11.2018 / 14:51

Tags