Usando Cron / Python

0

Eu queria saber se meus trabalhos de crontab foram escritos corretamente. Eu estou esperando para executá-los em um VPS e monitorá-los não é realmente possível. Sem mais delongas, aqui estão os meus trabalhos agendados:

# cd into directory at 2:57 AM 
57 2 * * 1-5 cd /folder_name

# activate the virtual environment
58 2 * * 1-5 . env/bin/activate

# run the main script
59 2 * * 1-5 python main.py

# at 5pm break the script (worried the most about this part)
0 16 * * 1-5 ^C

Além disso, mudei o relógio do meu sistema para horário do leste, isso significa que os cron jobs serão executados usando o fuso horário do leste?

    
por ng150716 28.10.2016 / 07:31

2 respostas

1

Não, cron não é um shell. Escreva um script:

#!/bin/sh
cd /folder_name
. env/bin/activate
exec python main.py

Torne-o executável e, em seguida, aponte uma entrada crontab para ela:

57 2 * * 1-5 /path/to/script

O script deve ser executado toda segunda-feira a sexta-feira, às 2:57 no (fuso horário local da sua máquina). Se você configurou seu sistema de e-mail corretamente, os resultados (se houver) serão enviados para você.

    
por 28.10.2016 / 07:48
0

Suas tarefas cron não estão escritas corretamente. Cada tarefa do cron obtém seu próprio ambiente, o que significa que o comando cd não tem relação com os cronjobs a seguir.

Em ambientes virtuais, sugiro que você ative manualmente o ambiente virtual e, em seguida, execute which python . Isso fornecerá um caminho completo para um python que sempre será executado nesse ambiente virtual. Você deve usar este caminho python em seu cron.

O crontab final deve ser parecido com isto:

0 3 * * 1-5 /full/path/to/virtualenv/python /full/path/to/main.py

No que diz respeito a matar o processo mais tarde, a solução mais comum para esse problema é usar um pidfile. Existem bibliotecas python para ajudá-lo a fazer isso. Esta resposta é bastante minuciosa sobre esse assunto, mas não está realmente relacionada à questão do crontab.

    
por 28.10.2016 / 07:53

Tags