Jak mogę uzyskać zadanie CRON uruchamiane co 30 minut?

224

Chcę dodać crontabwpis, aby wykonać skrypt co 30 minut, o godzinie i 30 minut po godzinie lub coś blisko. Mam następujące, ale wydaje się, że nie działa na 0.

*/30 * * * *

Jakiego ciągu muszę użyć?

Cron działa na OSX.

Darryl Hein
źródło
Czy udało ci się sprawić, że twój crontab zaczął działać? Twoim problemem może nie być plik crontab, ale przygotowanie go do użycia.
Eddie
Uruchamia 2 inne skrypty, jeden co minutę.
Darryl Hein
1
Czekam, aby zobaczyć, czy jedna z poniższych odpowiedzi działa, wystarczy poczekać, aż kolejne 30 minut minie ... za 3 minuty.
Darryl Hein
2
... Czy nie możesz po prostu zmienić 0,30 na 0,5? Jeśli 0,5 działa, dlaczego nie 0,30?
George Stocker,
1
Nigdy nie powiedziałeś nam, czy zadziałało na godzinę!
Eddie

Odpowiedzi:

487

Robić:

0,30 * * * * your_command
Vladr
źródło
1
Działa świetnie! W CentOS crontab musiałem zrobić coś takiego, 0,30 * * * * root your_commandgdzie root byłby użytkownikiem, którego używam.
prograhammer
@prograhammer - Czy ta linia była częścią crontab roota czy crontab innego użytkownika?
Muhamed Huseinbašić
@ MuhamedHuseinbašić dobre pytanie, ponieważ istnieją 2 różne crontabs (globalny, a następnie użytkownik). Będę musiał sprawdzić i zobaczyć ...
prograhammer
100

crontab nie rozumie „interwałów”, tylko „harmonogram”

ważne godziny: 0-23 - ważne minuty: 0-59

Przykład 1

30 * * * * your_command

oznacza to „uruchom, gdy minuta każdej godziny będzie 30 ” (uruchomi się o: 1:30, 2:30, 3:30 itp.)

przykład nr 2

*/30 * * * * your_command

oznacza to „biegnij, gdy minuta każdej godziny jest równomiernie podzielna przez 30 ” (biegnie o: 1:30, 2:00, 2:30, 3:00 itd.)

przykład nr 3

0,30 * * * * your_command

oznacza to „uruchom, gdy minuta każdej godziny wynosi 0 lub 30 ” (uruchomi się o: 1:30, 2:00, 2:30, 3:00 itp.)

to kolejny sposób na osiągnięcie takich samych wyników jak w przykładzie 2

przykład nr 4

19 * * * * your_command

oznacza to „biegnij, gdy minuta każdej godziny wynosi 19 ” (biegnie o: 1:19, 2:19, 3:19 itd.)

przykład # 5

*/19 * * * * your_command

oznacza to „biegnij, gdy jest minuta każdej godziny równo podzielna przez 19 ” (biegnie o: 1:19, 1:38, 1:57, 2:19, 2:38, 2:57 itd.)

Uwaga: w tym poście wprowadzono kilka udoskonaleń przez różnych użytkowników, w tym autora

aequalsb
źródło
76

Spróbuj tego:

0,30 * * * * your command goes here

Według oficjalnych Mac OS X crontab (5) podręcznika The /składnia jest obsługiwana. Dlatego, aby dowiedzieć się, dlaczego to nie zadziałało, musisz spojrzeć na dzienniki Crona. W tych logach powinieneś znajdować się wyraźny komunikat o błędzie.

Uwaga: Wydaje się, że Mac OS X używa Vixie Cron, podobnie jak Linux i BSD.

Eddie
źródło
Zawsze z powodzeniem używałem * / 30, ale nie przypominam sobie mojej aplikacji, w której było to zbyt krytyczne, gdyby działała tylko raz na godzinę, więc nie sądzę, żebym kiedykolwiek sprawdził.
Adam Hawes,
2
@Adam Hawes: W przeszłości z powodzeniem używałem * / xx, ale na Linuksie i innych systemach UNIX. Nie próbowałem osobiście Mac OSX. Pierwotne pytanie nie mówiło, który system operacyjny. Niektóre starsze systemy UNIX nie obsługują * / xx
Eddie
Twoja odpowiedź również zadziałała, ale Vlad ma mniej przedstawicieli, więc dałem mu punkty.
Darryl Hein,
1
@DarrylHein lol, Today Eddie ma mniej powtórzeń :-p. Głosuję za Eddiem.
początkujący
10

Jeśli twoje zadanie cron działa tylko w systemie Mac OS X, możesz zamiast tego użyć polecenia uruchomione.

Z harmonogramu zadań czasowych (oficjalne dokumenty Apple) :

Uwaga: Chociaż nadal jest obsługiwany, cron nie jest zalecanym rozwiązaniem. Został wycofany na korzyść premiery.

Możesz znaleźć dodatkowe informacje (takie jak uruchomiona strona Wikipedii ) za pomocą prostego wyszukiwania w Internecie.

PCheese
źródło
5

Wspomniałeś, że używasz OS X- W przeszłości używałem cronnix . Nie jest tak maniakalny, jak samodzielna edycja, ale pomógł mi dowiedzieć się, jakie kolumny są w mgnieniu oka. Tylko myśl.

Allyn
źródło
W przeciwnym razie może to być pomocne.
Darryl Hein,
3

Możesz użyć obu symboli „ ,LUB podzielić ” / ”.
Ale „ / ” jest lepsze.
Załóżmy przypadek „co 5 minut”. Jeśli używasz „ , ”, musisz napisać zadanie cron w następujący sposób:

0,5,10,15,20,25,30,35,....    *      *     *   * your_command

Oznacza to, że uruchamiaj komendę co godzinę we wszystkich określonych minutach: 0,5,10, ...

Jeśli jednak użyjesz „/”, możesz napisać następujące proste i krótkie zadanie:

*/5  *  *  *  *  your_command

Oznacza to uruchomienie komendy w minutach, które można podzielić przez 5 lub prościej: „0,5,10, ...”

Tak więc symbol podzielny ”/” jest zawsze najlepszym wyborem;

Mohsen Abasi
źródło