lavoro Crontab non inizia ... idee?
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.
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.