O trabalho do Cron não está se comportando como esperado

2

Portanto, eu tenho um script python que remove os repositórios git / svn / p4 e faz algumas gravações em um banco de dados.

Estou simplesmente tentando automatizar a execução desse script e, com base no que vejo no syslog que está sendo executado, até mesmo o arquivo em que tentei canalizar a saída está sendo criado, mas o arquivo está vazio. Aqui está o cron job:

10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag > ~/cronout.log 2&>1

Meio perplexo e não sei por onde começar. Pensando é talvez a exigência de senhas para o chaveiro e quais não. Qualquer ideia seria útil!

    
por ashrles 02.10.2014 / 17:16

2 respostas

0

Então acontece que o problema era com variáveis de ambiente que o script Python precisava, e era tão cedo no script que ele quebrou o script antes mesmo de produzir qualquer coisa.

O Cron não possui um ambiente regular.

Além disso, as senhas ssh foram necessárias para puxar os repositórios de gits que eu consegui resolver usando o Keychain.

Usando a ajuda de post de blog e alguns scripts de wrapper bash consegui fazer com que tudo funcionasse e fosse automatizado.

    
por 13.11.2014 / 20:00
3

Use o tee para pegar a saída

Manual do Tee

tee lê a entrada padrão INPUT / OUTPUT para gravar arquivos. Eu tenho um script Python que suporta um dos meus requisitos e simples ">" o redirecionamento falha. Tee é o caminho para pegar a saída.

Sua linha deve ser:

10 04 * * * user /usr/bin/python2.7 /home/user/script.py -f someFlag | tee -a ~/cronout.log 2>&1

Tente isto: Quebra seu script python em um script #! / bin / bash no diretório / usr / bin /.

Em seguida, substitua sua linha:

10 04 * * * user /usr/bin/myPythonWrapperInBash& > /path/to/log/out 2>&1

Explicação da invocação da camiseta

  • [- a] acrescenta o arquivo.
  • Invocação de baunilha (sem sinalizadores) sobrescreveria o arquivo e você perderia seu log.
por 02.10.2014 / 17:21