Parser wyrażeń cron
Wskazówka dla danych wejściowych
Przejmujesz plik crontab, a w nim mnóstwo wyrażeń typu 0 */2 * * 1-5, 15 4 1 * *, */30 8-18 * * *. Ten parser przyjmuje standardowe wyrażenie cron z 5 polami i zwraca zrozumiały opis po angielsku (np. “every 2 hours on weekdays”) oraz kolejne 5 momentów, w których zadanie faktycznie się uruchomi. Przydatny, by zrozumieć starsze harmonogramy i sprawdzić nowy przed wdrożeniem.
Jak przeanalizować wyrażenie cron
-
1
Wklej wyrażenie
Standardowe wyrażenie z 5 polami (`* * * * *`): minuta, godzina, dzień miesiąca, miesiąc i dzień tygodnia.
-
2
Przeczytaj opis po angielsku
Parser przekształca każde pole na prosty angielski, na przykład "At minute 0, every 2 hours, on day(s) of week 1-5."
-
3
Sprawdź podgląd kolejnych uruchomień
5 najbliższych momentów uruchomienia. Jeśli nie odpowiadają Twojemu zamiarowi, dopracuj wyrażenie.
-
4
Popraw nieprawidłowe pola
Wyrażenia z błędną liczbą pól lub wartościami poza zakresem są odrzucane z komunikatem wskazującym problematyczne pole.
Dekodowanie każdego pola
Każde pole ma własny dopuszczalny zakres i specjalne znaki:
| Pole | Zakres | Obsługiwane symbole wieloznaczne |
|---|---|---|
| Minuta | 0-59 | * , - / |
| Godzina | 0-23 | * , - / |
| Dzień miesiąca | 1-31 | * , - / |
| Miesiąc | 1-12 | * , - / |
| Dzień tygodnia | 0-7 | * , - / |
*= każda wartość (*w polu minut oznacza każdą minutę).1,5,10= lista wartości.1-5= zakres wartości.*/15lub0-45/15= krok, liczony od początku zakresu pola.- Dzień tygodnia
0i7to oba niedziela, więc obie konwencje są akceptowane. Nazwy miesięcy i dni tygodnia, takie jak JAN czy MON, nie są akceptowane; używaj liczb.
Przykłady z objaśnieniem
| Wyrażenie | Po angielsku |
|---|---|
0 */2 * * 1-5 |
At minute 0 every 2 hours, Monday through Friday |
15 4 1 * * |
At 04:15 on the 1st day of every month |
*/30 8-18 * * * |
Every 30 minutes between 08:00 and 18:59 |
0 0 1,15 * * |
At midnight on the 1st and 15th of every month |
0 22 * * 0 |
At 22:00 every Sunday |
Co akceptuje parser
- Dokładnie 5 pól: minuta, godzina, dzień miesiąca, miesiąc i dzień tygodnia. Wyrażenia Quartz z 6 lub 7 polami (z sekundami lub rokiem) są odrzucane.
- Poprawne zakresy: każda wartość musi mieścić się w swoim polu, na przykład minuta 0-59, godzina 0-23, dzień miesiąca 1-31, miesiąc 1-12 i dzień tygodnia 0-7.
- Dodatnie kroki: wartość po
/musi być liczbą dodatnią (*/0jest odrzucane). - Brak nazwanych skrótów:
@daily,@rebooti podobne skróty nie są akceptowane. Najpierw rozwiń je do formy z 5 polami (na przykład@daily=0 0 * * *).
Dzień miesiąca i dzień tygodnia razem
Gdy ustawione są jednocześnie dzień miesiąca i dzień tygodnia, ten parser planuje uruchomienie tylko wtedy, gdy oba pasują: 0 0 1 * MON odpala się zatem tylko wtedy, gdy 1. dzień wypada w poniedziałek. Większość implementacji crona w Linuksie traktuje te dwa pola jako LUB (zadanie działa, gdy pasuje którekolwiek). Sprawdź więc wyrażenie względem harmonogramu, którego faktycznie używasz.
Uwaga o strefie czasowej
Czasy w podglądzie są obliczane według zegara serwera, który działa w UTC. Jeśli Twój crontab działa na maszynie w innej strefie czasowej, wyświetlane tu czasy mogą różnić się od czasów na tej maszynie.
Najczęściej zadawane pytania
Nie. Akceptowane są tylko standardowe wyrażenia z 5 polami. Wyrażenia Quartz z sekundami (6 pól) lub z rokiem (7 pól) są odrzucane z komunikatem o błędzie.
Zwykle z jednego z tych powodów: podgląd korzysta z zegara serwera w UTC, a Twój crontab działa w innej strefie czasowej; ustawione są zarówno dzień miesiąca, jak i dzień tygodnia (ten parser wymaga, by oba pasowały); albo krok, który zaczyna się od nowa na początku każdej godziny lub dnia.
Tak, jeśli jest to standardowe wyrażenie z 5 polami, którego używa Kubernetes (domyślnie UTC). Pamiętaj, że podgląd tutaj korzysta z zegara serwera w UTC: jeśli klaster działa w innej strefie czasowej, czasy mogą się różnić.
Cron w Linuksie akceptuje nazwane skróty: @reboot (przy starcie), @yearly / @annually (0 0 1 1 *), @monthly, @weekly, @daily, @hourly. Ten parser ich nie akceptuje, więc najpierw rozwiń skrót do równoważnego wyrażenia z 5 polami i dopiero potem wklej je tutaj.
Powiązane narzędzia
Tabela ASCII
Pełna tabela ASCII od 0 do 127 z zapisem dziesiętnym, szesnastkowym, ósemkowym i binarnym oraz notacją numerycznych odwołań HTML, w tym kodami sterującymi NUL, LF i DEL.
Referencja znaków HTML
Przeszukiwalna lista encji HTML wraz z ich kodami nazwanymi i liczbowymi oraz kopiowaniem jednym kliknięciem specjalnych znaków i symboli.
Skróty klawiaturowe
Wyszukuj udokumentowane skróty domyślne VS Code, Chrome i Bash z GNU Readline w macOS, Windows i Linux.
Generator losowych liter
Generuj losowe litery A-Z. Wybierz liczbę, wielkie litery, małe litery lub zapis mieszany i użyj wyniku w grach, zadaniach lub lekcjach.
Konwerter ASCII na binarny
Konwertuj dowolny ciąg ASCII na reprezentację binarną. Każdy znak staje się ośmioma bitami, rozdzielonymi spacjami, gotowymi do wklejenia w ślad protokołu albo zadanie domowe.
Próbnik kolorów HEX
Wybierz lub wpisz kolor HEX i sprawdź RGB, HSL, przybliżone CMYK, luminancję względną oraz kontrast z bielą i czernią.