2009-04-14 18 views

Odpowiedz

3

Nie możesz tego zrobić bezpośrednio z cron/crontab.

Zadania Cron uruchamiane są według określonego harmonogramu, a nie w określonym przedziale.

Jedną alternatywą byłoby opracowanie harmonogramu, który byłby zbliżony do twojego "co 72 minuty", biegnąc o północy, 1:12, 2:24, 3:36, ..., i rozciągając go w przybliżeniu trafiając w górę o północy. Twój plik crontab może określać wszystkie te razy jako czas wykonania.

Inną opcją jest oddzielna aplikacja obsługująca planowanie i uruchamianie aplikacji.

22

Użyj przy (mężczyzna przy). Niech aplikacja lub skrypt startowy obliczy czas uruchamiania 72 minuty w przyszłości i sam zaplanuje ponowne uruchomienie, zanim zacznie działać.

Dostępne również w systemie Windows XP i Vista.

Oto przykład dla GNU/Linux: co -f command.sh teraz + 72 minut

+1

s/zaplanuj/zaplanuj sobie ponowne uruchomienie/ –

+1

Mam nadzieję, że stanie się to zaakceptowaną odpowiedzią. Po uruchomieniu zadania można je ponownie zaplanować za każdym razem, gdy działa. Może się jednak okazać, że nie jesteś zsynchronizowany; więc upewnij się, że przestawiłeś swoją pracę jako pierwszą rzecz w scenariuszu, a nie ostatnią. –

2

Musisz ustawić dokładnie 20 zadań, za to - czyli ustawić jedną godzinie 00:00, następny na 01 : 12, następny o 02:24 itd.

20 iteracji robi cały dzień.

Niestety, jest to jedyny sposób, aby to zrobić, ponieważ zadania cronu są ustawiane wcześniej w ustalonym harmonogramie zamiast uruchamiania, powiedzmy "po X minutach ostatniego zadania zostało wykonane".

33

Od cron uruchamia zadania w oparciu o czas, bez interwałów, nie ma oślepiająco prosty sposób to zrobić. Mimo że jest to trochę hack, możesz ustawić wiele linii w crontab, aż znajdziesz wspólny mianownik. Ponieważ chcesz zadanie uruchomić co 72 minut, należy wykonać w następujących godzinach:

  • 00:00
  • 01:12
  • 02:24
  • 03:36
  • 04 : 48
  • 06:00
  • 07:12
  • ...

Jak widać, wzór powtarza się co 6 godzin przy 5 zadaniach. Więc trzeba będzie 5 linii w twojej crontab:

 
0 0,6,12,18 * * * command 
12 1,7,13,19 * * * command 
24 2,8,14,20 * * * command 
36 3,9,15,21 * * * command 
48 4,10,16,22 * * * command 

inna opcja, oczywiście, jest stworzenie skryptu wrapper demona lub powłoki, które wykonuje i śpi do żądanego czasu do czasu zatrzymania.

4

Zawsze można podejść do wyzwalania crona co minutę i natychmiast wyłączyć skrypt, jeśli został uruchomiony niedawno niż 72 minuty temu.

2

Nie używaj crona ...

+1

Uważaj, jeśli program się zawiesza, musisz go zrestartować. Ponadto po ponownym uruchomieniu komputera program nie będzie uruchomiony, musisz go uruchomić. –

+0

Tak, lepiej zrób demona i używaj monitora na przykład, aby go uruchomić. – mahemoff

-2

Uh Wiem, że to już dawno, ale patrzyłem na pewne problemy z planowaniem i zobaczyłem to pytanie.

Wystarczy zrobić to w crontab

*/72 * * * * /home/script.sh

+4

nie działa, przynajmniej nie z vixie cron 3.0 – hop

+2

Minuty to 0-59. http://www.pantz.org/software/cron/croninfo.html – dresende

+1

To nie zadziała, minuty to 0-59, a cokolwiek ponad 30 minut będzie publikowane o x w przeszłości, np. 34 będzie publikowane po 34 minutach przeszłych, a nie co 34 minuty. – omega1

Powiązane problemy