Cron jobs-Como fazer login?

Quero saber como posso ver exactamente o que os trabalhos do cron estão a fazer em cada execução. Onde estão os ficheiros de Registo? Ou posso enviar a saída para o meu e-mail? Eu defini o endereço de E-mail para enviar o log quando o trabalho cron corre, mas eu não recebi nada ainda.

 154
Author: codeforester, 2011-01-27

7 answers

* * * * * myjob.sh >> /var/log/myjob.log 2>&1

Irá registar todos os resultados da tarefa cron para /var/log / myjob.log

Pode utilizar {[1] } para enviar e-mails. A maioria dos sistemas irá enviar cron a saída da tarefa por e-mail para o root ou para o utilizador correspondente.

 249
Author: Spliffster, 2014-06-19 15:56:27

Por omissão, os registos do cron em /var/log / syslog para que possa ver os itens relacionados com o cron usando:

grep CRON /var/log/syslog

Https://askubuntu.com/questions/56683/where-is-the-cron-crontab-log

 49
Author: Matthew Lock, 2017-04-13 12:22:42
Aqui está o meu código:
* * * * * your_script_fullpath >> your_log_path 2>&1
 9
Author: Haimei, 2014-06-05 21:03:23

Existem pelo menos três tipos diferentes de Registo:

  1. O registro antes do programa é executado, que só se registra se o o cronjob tentou executar o comando. Aquele está localizado em /var/log / syslog, como já mencionado por @Matthew Lock.

  2. O registo de erros após o programa tentar executar, que pode ser enviado para um e-mail ou para um arquivo, como mencionado por @Spliffster. Eu prefiro o registo para um arquivo, porque com e-mail então você tem uma nova fonte de problemas, e sua verificação se o envio de E-mail e recepção está funcionando perfeitamente. Às vezes é, às vezes não é. Por exemplo, em máquina de trabalho comum simples na qual você não está interessado configurar um smtp, por vezes irá preferir registar-se num ficheiro:

     * * * *  COMMAND_ABSOLUTE_PATH > /ABSOLUTE_PATH_TO_LOG 2>&1
    
    • Eu também consideraria verificar as permissões do /ABSOLUTE_ PATH_ TO_ log, e executar o comando a partir das permissões desse utilizador. Apenas para verificação, enquanto você testa se pode ser uma fonte potencial de problema.
  3. o registo do próprio programa, com o seu próprio tratamento de erros e registo para fins de rastreio.

Existem algumas fontes comuns de problemas com cronjobs: * O caminho absoluto do binário a ser executado. Quando a Geres do teu shell, pode funcionar, mas o processo cron parece usar outro. ambiente, e por isso nem sempre encontra binários se você não usa o caminho absoluto. * As bibliotecas usadas por um binário. É mais ou menos o mesmo ponto anterior, mas certifique-se de que, se simplesmente colocar o NOME do comando, está se referindo exatamente o binário que usa a mesma biblioteca, ou melhor, verificar se o binário você está se referindo com o caminho absoluto é o mesmo que você consulte quando você usar o console diretamente. Os binários podem ser encontrados usando o comando locate, por exemplo:

$locate python

Certifique-se de que o binário que irá referir, é o mesmo binário que está a chamar na sua shell, ou simplesmente teste novamente na tua concha usando o caminho absoluto que planeias colocar no cronjob.

    Outra fonte comum de problemas é a sintaxe no cronjob. Lembre-se que existem caracteres especiais que pode usar nas listas (vírgulas), para definir os intervalos (traços -), para definir o incremento dos intervalos (barras), etc. Ver: http://www.softpanorama.org/Utilities/cron.shtml
 9
Author: David L, 2017-04-15 12:15:57

No Ubuntu, poderá activar um ficheiro cron.log para conter apenas as entradas do CRON.

Descomentar a linha que menciona cron em /etc/rsyslog.d/50-default.conf ficheiro:

#  Default rules for rsyslog.
#

#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                          /var/log/cron.log

Gravar e fechar o ficheiro e depois reiniciar o serviço rsyslog:

sudo systemctl restart rsyslog

Agora pode ver entradas de registo de cron no seu próprio ficheiro:

sudo tail -f /var/log/cron.log

Resultados da amostra:

Jul 18 07:05:01 machine-host-name CRON[13638]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)

No entanto, não irá ver mais informações sobre quais os programas que foram executados de facto dentro de /etc/cron.daily ou /etc/cron.hourly, a menos que esses programas produzam directamente para o cron.log (ou talvez para algum outro arquivo de log).

Se quiser verificar se um crontab está a correr e não tem de O procurar em cron.log ou syslog, crie um crontab que redireccione o resultado para um ficheiro de Registo à sua escolha-algo do género:

# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
30 2 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/le-renew.log 2>&1

medidas tomadas a partir de: https://www.cyberciti.biz/faq/howto-create-cron-log-file-to-log-crontab-logs-in-ubuntu-linux/

 2
Author: Gianfranco P., 2017-07-18 07:19:56
Se estás a executar um comando com o sudo, não o permite. O Sudo precisa de um tty.
 1
Author: Saad Masood, 2015-10-16 22:05:46

cron já envia a saída padrão e erro padrão de cada trabalho que ele executa por correio para o proprietário do trabalho cron.

Pode usar MAILTO=recipient no ficheiro crontab para enviar os e-mails para uma conta diferente.

Para isto funcionar, tens de ter o correio a funcionar bem. Entregar a uma caixa de correio local normalmente não é um problema (na verdade, as chances são ls -l "$MAIL" irá revelar que você já tem recebido algum), mas tirá-lo da caixa e sair para a internet requer a MTA (Postfix, Sendmail, o que você tem) para ser configurado corretamente para se conectar ao mundo.
 1
Author: tripleee, 2017-10-23 06:56:05