Domanda

Grazie per avermi aiutato impostazione miei lavori cron, crontab è stata davvero una miniera d'oro per me.

Purtroppo ho un problema, e non hanno alcuna idea di che cosa così mai che cosa potrebbe essere ... fondamentalmente un lavoro non viene avviato, mentre i posti di lavoro vicini fanno. Mi spiego


Questa è la mia lista crontabs lavoro:

  

* / 10 * * * * pitone /webapps/foo/manage.py fetch_articles

     

* / 10 * * * * pitone /webapps/bar/manage.py fetch_books

I li ha scritti come sono in un file e memorizzati utilizzando crontab / path / to / file.

Controllato con crontab -l ed i posti di lavoro ci sono.


La cosa strana è che 1 di questi esegue ogni 10 minuti normalmente ... ma l'altro non lo fa. Ho provato a digitare il comando manuale, e funziona benissimo senza un problema.


Qualcuno ha suggerimenti?

Aiuto sarebbe molto apprezzato, grazie ragazzi.


Aggiornamento:

Sono stato nei file di registro di sistema e ho trovato questo:

  

5 marzo 02:50:01 localhost CRON [21652]: (root) CMD (Python /webapps/foo/manage.py fetch_books)

Fa questo crontab media sta chiamando il buon lavoro?


Grazie per le vostre risposte ragazzi!


è stato risolto! grazie mille a tutti !!

Il problema era che lo script in silenzio non è riuscito, credo che sia dovuto al cambiamento PYTHON_PATH causa in cui lo script viene chiamato da ... io sono del tutto sicuro.

È stato utile?

Soluzione

Cron viene sempre eseguito in un ambiente diverso a quello che pensi: -)

Ho sempre i miei cronjobs impostato come:

*/10 * * * * ( date ; python /webapps/foo/manage.py fetch_articles ) >>/tmp/fetch.out 2>&1

per garantire che ci sia qualcosa di registrato che posso guardare.

In questo modo restringere il problema verso il basso per uno:

  • cron, se il file temporaneo non appare; o
  • lo script, se viene visualizzato.

E, in quest'ultimo caso, si spera che ci sarà qualche uscita è possibile eseguire il debug. In caso contrario, mettere in uscita in là.

Un modo per farlo è quello di mettere:

set -x

nella parte superiore dello script che causano tutte le linee da emettere prima dell'esecuzione. Tutti i miei script tendono a iniziare:

#!/bin/bash
#set -x

quindi posso solo rimuovere il commento che seconda linea durante il debug.

Altri suggerimenti

Dalla manpage crontab:

  

BUGS          Anche se cron richiede che ogni voce in un vicolo crontab in un   carattere di nuova riga ,          né il comando crontab né il demone cron rileverà questo   errore. Anziché,          crontab apparirà per caricare normalmente. Tuttavia, il comando   non potrà mai funzionare.           La scelta migliore è quella di garantire che il vostro crontab ha una riga vuota   la fine.

(il corsivo è mio).

Credo che la risposta di ~ unutbu è probabilmente corretto se è il secondo lavoro che non è in esecuzione.

Tuttavia un'altra cosa da verificare è se /webapps/bar/manage.py richiede l'accesso esclusivo a tutte le risorse, ad esempio socket di rete / file temporanei ecc Dal momento che si stanno iniziando 2 processi allo stesso tempo, si può essere innescando una condizione di competizione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top