2009-03-01 20 views
11

Ho scritto uno script che ottiene i dati da solr per i quali la data è compresa nel periodo specificato e eseguo lo script utilizzando come cron giornaliero.Come posso aumentare il timeout per un cronjob/crontab?

Il problema è che il cronjob non completa l'attività. Se eseguo manualmente lo script (per lo stesso periodo di tempo), funziona bene. Se riduco il periodo di tempo specificato, lo script viene eseguito anche da cron. Quindi la mia ipotesi è che il cronjob stia scadendo durante l'esecuzione dello script, ci sono molti dati da elaborare.

Come aumentare il timeout per cronjob?

PS - 1. Lo script che sto eseguendo in cronjob è uno script di bash che esegue uno script python.

risposta

5

Si potrebbe provare a utilizzare ulimit -t [numero di secondi] nel cronjob prima di eseguire lo script.

18

Si noti che la soluzione ulimit -t suggerita limiterà la quantità di tempo della CPU utilizzata, non la quantità di tempo effettivo trascorso.

Dal bash manpage:

ulimit [-HSTabcdefilmnpqrstuvx [limit]] 
... 
-t  The maximum amount of cpu time in seconds 

E ancora più importante, cron non impone alcun timeout, in primo luogo. Semplicemente prende il via da qualunque processo e procede.


BTW: Ci scusiamo per la pubblicazione come risposta, ma non ho ancora abbastanza punti per aggiungere commenti.

Problemi correlati