2009-03-01 18 views
11

Napisałem skrypt, który pobiera dane z solr, dla których data jest w określonym czasie, i uruchamiam skrypt, używając jako codziennego crona.Jak zwiększyć limit czasu dla cronjob/crontab?

Problem polega na tym, że cronjob nie wykonuje zadania. Jeśli ręcznie uruchomię skrypt (w tym samym okresie), działa on prawidłowo. Jeśli zmniejszę określony okres czasu, skrypt również zostanie uruchomiony z crona. Domyślam się, że cronjob wyczerpywał się podczas uruchamiania skryptu, jest dużo danych do przetworzenia.

Jak zwiększyć limit czasu na cronjob?

PS - 1. Skrypt uruchamiany w cronjob jest skryptem bash, który uruchamia skrypt Pythona.

Odpowiedz

5

Możesz spróbować użyć ulimit -t [liczba sekund] w cronjob przed uruchomieniem skryptu.

18

Należy pamiętać, że sugerowane rozwiązanie ulimit -t ograniczy ilość wykorzystanego czasu procesora, a nie ilość rzeczywistego czasu, który minął.

Z bash manpage:

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

I co ważniejsze, cron nie narzuca żadnych limitów czasu w pierwszej kolejności. Po prostu rozpoczyna każdy proces i przechodzi dalej.


BTW: Przepraszamy za wpisanie tego jako odpowiedź, ale nie mam wystarczającej liczby punktów, aby dodać komentarze.