Cron jobs-Como fazer login?
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.
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
* * * * * your_script_fullpath >> your_log_path 2>&1
Existem pelo menos três tipos diferentes de Registo:
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.
-
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.
- 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
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/
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.
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.