Cron não está executando minha instrução Python

2

Eu tenho a seguinte entrada no crontab:

* * * * * python -c "import datetime; datetime.datetime.now()" >> /home/myname/pythoncron1.log

O arquivo pythoncron1.log está sendo criado, mas não tem nada e a data de modificação do arquivo não foi atualizada desde que o arquivo foi criado. Eu estava esperando para ver um monte de linhas no arquivo, um para cada minuto que o trabalho cron foi executado.

Por que isso não está funcionando?

(Você deve ter adivinhado, estou tentando fazer algo um pouco mais complicado do que o exemplo acima, mas reduzi o problema para o python aparentemente falhando ao ser executado pelo cron).

    
por d4nt 24.02.2010 / 12:31

4 respostas

5

Só para esclarecer, você tem alguma declaração impressa em seu script python?

Rodando interativamente, você não precisa deles:

Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2010, 2, 24, 19, 36, 21, 244853)

Na linha de comando você faz:

example:~% python -c "import datetime; datetime.datetime.now()"      
example:~% python -c "import datetime; print datetime.datetime.now()"
2010-02-24 19:38:59.639324
example:~% 
    
por 24.02.2010 / 12:39
2

você pode precisar colocar todo o caminho do python em, / usr / bin / python

    
por 24.02.2010 / 12:33
1

Se, de fato, não é o que Frenchie disse, o que provavelmente é, pode ser útil olhar para o correio dos usuários. Cron envia e-mails de trabalhos agendados para a conta de usuário desse crontab. É por isso que muitas vezes você vê STDOUT e STDERR canalizados para / dev / null, então eles não serão enviados pelo correio que não se importam.

Você pode usar o comando de email como esse usuário para verificar se há mensagens com saída útil. Além disso, o arquivo / var / log / cron pode incluir informações úteis.

    
por 24.02.2010 / 13:45
0

python -c "import datetime; datetime.datetime.now()" não produz nada, então não há nada para ser enviado para o arquivo.

Certifique-se de que o comando que você executa realmente produza algo na linha de comando.

    
por 24.02.2010 / 12:40