O trabalho Cron não fornece saída

2

Eu tentei agendar meu primeiro trabalho no cron da seguinte forma:

crontab -e

O arquivo teve alguns comentários no topo, e na primeira linha depois disso, coloquei

* * * * * date

Eu esperava que a data e a hora fossem impressas a cada minuto, mas nada acontece no terminal. A saída está sendo enviada para outro lugar ou a tarefa do cron não está em execução? Alguma dica para fazer isso funcionar?

    
por John 17.03.2015 / 06:07

2 respostas

3

Da página do manual do cron:

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). The children copies of cron running these processes have their name coerced to uppercase, as will be seen in the syslog and ps output.

Então, eu verificaria seu e-mail se você configurá-lo com o sistema ou com o syslog (por exemplo, / var / log / syslog).

EDIT Do serverfault (editado para corresponder ao seu comando)

The following will send any Cron output to /usr/bin/logger (including stderr, which is converted to stdout using 2>&1), which will send to syslog, with a 'tag' of date_logging. Syslog handles it from there. Since most systems already have built-in log rotation mechanisms, I don't need to worry about a log like /var/log/mycustom.log filling up a disk.

* * * * * root    /bin/date 2>&1 | /usr/bin/logger -t date_logging
    
por 17.03.2015 / 06:14
0

OP, no topo do meu crontab, antes de qualquer trabalho, eu tenho esses comentários para me lembrar do formato cron, seguido pela configuração da variável MAILTO. Como boa prática, todas as variáveis do cron devem ser definidas antes de qualquer definição de tarefa cron.

# min  hrs  dayofmonth  month  dayofweek  command
# dow = 0-6 where 0 is Sunday, 6=Saturday
MAILTO=chuck

Portanto, no meu caso, chuck é um usuário local no qual o cron da máquina está sendo executado. Se você tiver uma configuração completa do Mail Transfer Agent, poderá definir o MAILTO como um endereço de e-mail completo:

[email protected]

Toda a saída cron é enviada ao usuário na variável MAILTO.

Tenha cuidado, pois recebi e-mails "em branco" do cron que não estavam realmente em branco. Capturou uma saída de retorno de carro para STDOUT! Isso foi um PITA para rastrear como eu não conseguia encontrar uma maneira para o meu leitor de e-mail do Ubuntu (alpine) mostrar caracteres ocultos. (É uma boa ideia ter um leitor de e-mail que mostre ctrs ocultos.)

Como uma alternativa para testar um arquivo de lote de trabalho / shell, você pode usar at . Digite at TIMESPEC seguido por um comando por linha e, em seguida, ^ D no final da lista de comandos. No entanto, isso não permitirá que você saiba se as variáveis do cron estão configuradas corretamente, mas você ainda receberá um email (para o usuário local atual que executou o trabalho at ) quando o trabalho at estiver concluído.

at now + 1 minute<ENTER>
batchfilename1<ENTER>
batchfilename2<ENTER>
^D<ENTER>
    
por 17.03.2015 / 12:57

Tags