Execute o Crontab a qualquer momento após as 16h

3

Eu estou tentando executar um script através do crontab no osx 10.8.5 que será executado às 4:30.

30 16 * * 1-5 /Library/Frameworks/Python.framework/Versions/2.7/bin/python /Users/lego90511/PycharmProjects/Stock\ Scanner/stock_scanner.py

Mas eu percebi hoje que, meu computador não está sempre ligado às 4:30. Então eu adicionei a correção * 16 * * 1-5. Mas então eu percebi que pode não ser de todo entre 4-5. Como posso definir o crontab para ser executado a qualquer momento após as 16h (16 horas do cron)?

    
por EasilyBaffled 24.10.2013 / 23:02

2 respostas

5

Devido ao modo como o cron faz seu processamento, não tenho certeza se você pode usar o cron por iteself para fazer isso. Na página do manual do cron (8) :

The cron utility then wakes up every minute, examining all stored crontabs, checking each command to see if it should be run in the current minute. When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists).

O Cron não possui um método para identificar entradas já executadas. Então, você poderia fazer isso:

* 16-23 * * 1-5 <script>

Mas, isso apenas informaria ao cron para executar este script a cada minuto das 16:00 às 23:59, contanto que o cron estivesse em execução. (Olhando para a página do manual crontab (5) , eu não acho que você possa fazer "16-24 "ou" 16-0. ")

Então, se você quiser que algo seja executado uma vez entre as 16h e a meia-noite, minha sugestão é que o cron inicie o script a cada 15 minutos, depois das 16h:

*/4 16-23 * * 1-5 <script>

Então, dentro do script , inclua algum método para identificar se o script já foi executado naquele dia.

    
por 25.10.2013 / 00:57
1

Para o Linux, há Anacron para tarefas do cron perdidas. (veja aqui )

Para o Mac OSX, encontrei esta versão , mas parece que ela foi descontinuada.

Há também uma versão aqui que é para "Leopard":

Note: This version of Anacron will run on MacOS 10.5 (Leopard) but it is not needed, as the Leopard launchd will run skipped jobs when the machine is next awake. Read more at http://mac.majorgeeks.com/files/details/anacron.html#Z5s7GokjQVbUATOU.99

Você pode tentar se ele for executado em "Mountain lion" ou alternar para "Launchd", que tem a funcionalidade para executar trabalhos perdidos incorporados.

Cron and Anacron
If you run Mandrake, SUSE, or any other distros and your computer is not powered up 24 hours a day, there are several Cron jobs that might be forgotten because they're scheduled for 3:00AM-4:00AM in the morning. Installing Anacron will set this to rights. Anacron searches for missed Cron jobs and executes them five minutes after you boot your computer. You'll notice extra activity of your CPU and hard disk for about five to seven 7 minutes as a result. Note: Red Hat and Fedora have Anacron pre-installed by default.

Installing Anacron is simple and needs no special configuration. Here's an example of how to install it using Mandrake:

Mandrake Control Center > Software Management > Installing Software > search for Anacron.

    
por 25.10.2013 / 01:12