§

Εισάγετε μια έκφραση cron ή επιλέξτε μια προεπιλογή παρακάτω.

Γρήγορες προεπιλογές:
§

Επόμενες 10 ώρες εκτέλεσης

cron

Το αναγνώσιμο από άνθρωπο χρονοδιάγραμμα εμφανίζεται εδώ...

    §

    Δημιουργός έκφρασης

    Οι μηχανικοί των ΗΠΑ και του ΗΒ συναντούν σύνταξη cron σε κάθε επίπεδο της στοίβας: το AWS EventBridge Scheduler το δέχεται για ενεργοποιήσεις Lambda, οι πόροι Kubernetes CronJob χρησιμοποιούν την ίδια μορφή πέντε πεδίων σε κάθε σύμπλεγμα EKS και GKE και το GitHub Actions το διαβάζει απευθείας από τα `.github/workflows/*.yml`. Η παγίδα είναι ότι καμία από αυτές τις πλατφόρμες δεν συμφωνεί στα όρια. Το EventBridge προσθέτει ένα έκτο πεδίο για το έτος και απαιτεί `?` αντί για `*` σε ένα από τα πεδία ημέρας. Το Kubernetes τρέχει σε UTC εκτός αν ορίσετε ρητά το `spec.timeZone`. Το GitHub Actions τρέχει σε UTC, τελεία, χωρίς παράκαμψη. Αυτό το εργαλείο αναλύει όποια γεύση και αν επικολλήσετε, δείχνει τις επόμενες δέκα ώρες εκτέλεσης στη ζώνη IANA που επιλέγετε και σας επιτρέπει να χτίσετε μια νέα έκφραση ένα πεδίο τη φορά, ώστε να μπορείτε να ελέγξετε το χρονοδιάγραμμα πριν σταλεί στην παραγωγή.

    Τι είναι μια έκφραση cron;

    Μια έκφραση cron είναι μια συμπαγής συμβολοσειρά χρονοπρογραμματισμού που λέει σε έναν προγραμματιστή εργασιών ακριβώς πότε να εκτελέσει μια εργασία. Η μορφή γεννήθηκε το 1975 μέσα στον δαίμονα Unix V7 cron και ελάχιστα έχει αλλάξει από τότε — η ίδια γραμματική πέντε πεδίων εμφανίζεται σήμερα σε Kubernetes CronJobs, AWS EventBridge, GitHub Actions workflows, Google Cloud Scheduler, GitLab CI, Jenkins pipelines και το δυαδικό crontab που εξακολουθεί να αποστέλλεται με κάθε διανομή Linux. Η γραμματική συσκευάζει πολλή σημασία σε περίπου δεκατρείς χαρακτήρες, γι' αυτό ένας αναλυτής που τη μετατρέπει σε απλά Αγγλικά είναι η διαφορά ανάμεσα σε μια σίγουρη ανάπτυξη και μια επαναφορά στις 3 π.μ.

    Πώς λειτουργεί μια έκφραση cron;

    Μια τυπική έκφραση cron έχει πέντε πεδία διαχωρισμένα με κενά που μαζί ορίζουν ένα επαναλαμβανόμενο χρονοδιάγραμμα. Η μηχανή ελέγχει το τρέχον ρολόι τοίχου έναντι της έκφρασης κάθε λεπτό και ενεργοποιεί την εργασία όταν και τα πέντε πεδία ταιριάζουν. Τα πεδία, από αριστερά προς τα δεξιά:

    1. Λεπτό (0–59). Ποιο λεπτό μέσα στην ώρα τρέχει η εργασία. 0 σημαίνει στην ακρίβεια της ώρας, 30 σημαίνει στις μισή, */5 σημαίνει κάθε πέντε λεπτά (00, 05, 10, ...) και 15,45 σημαίνει στο τέταρτο και στο τρία τέταρτα.
    2. Ώρα (0–23). Ποια ώρα της ημέρας στο 24ωρο ρολόι. 0 είναι μεσάνυχτα, 9 είναι 9 π.μ., 17 είναι 5 μ.μ. Εύρη (9-17 για εργάσιμες ώρες) και τιμές βήματος (*/2 για κάθε δεύτερη ώρα) λειτουργούν όπως και για τα λεπτά.
    3. Ημέρα μήνα (1–31). Ποια ημερολογιακή ημέρα να τρέξει. 1 σημαίνει την 1η του μήνα, * σημαίνει κάθε μέρα, 1,15 σημαίνει την 1η και τη 15η. Προσέξτε με το 31 — παρακάμπτει σιωπηλά μήνες που δεν έχουν 31η ημέρα.
    4. Μήνας (1–12 ή ΙΑΝ–ΔΕΚ). Ποιοι μήνες να τρέξει. * σημαίνει κάθε μήνα, 1,7 σημαίνει Ιανουάριο και Ιούλιο, 1-3 σημαίνει μόνο Q1. Τα τρίγραμμα ονόματα μηνών είναι case-insensitive στις περισσότερες υλοποιήσεις.
    5. Ημέρα εβδομάδας (0–7, όπου και το 0 και το 7 σημαίνουν Κυριακή). Περιορίζει την ενεργοποίηση σε συγκεκριμένες καθημερινές. 1-5 είναι Δευτέρα έως Παρασκευή, 0,6 είναι το σαββατοκύριακο, MON-FRI λειτουργεί στους περισσότερους αναλυτές. Όταν και η ημέρα-μήνα και η ημέρα-εβδομάδας είναι ορισμένες σε συγκεκριμένες τιμές, το κλασικό cron ενεργοποιείται σε οποιαδήποτε αντιστοιχία (λογικό OR), κάτι που εκπλήσσει τους ανθρώπους κάθε φορά.

    Γιατί να χρησιμοποιήσετε έναν αναλυτή εκφράσεων cron;

    • Πιάστε τη σιωπηλή παρανάγνωση πριν από την ανάπτυξη. Η έκφραση `0 2 */3 * *` ενεργοποιείται στις 2 π.μ. κάθε τρίτη μέρα, όχι κάθε τρία λεπτά — επικολλήστε την εδώ και θα το δείτε σε απλά Αγγλικά πριν σταλεί στην παραγωγή.
    • Οι περισσότεροι cloud προγραμματιστές τρέχουν σε UTC από προεπιλογή. Η προεπισκόπηση των επόμενων δέκα ωρών εκτέλεσης στην τοπική ζώνη σας φέρνει στην επιφάνεια την απόκλιση DST της μίας ώρας πριν ειδοποιήσει κάποιον στις 3 π.μ.
    • Συντομεύσεις όπως `@daily`, `@weekly` και `@monthly` είναι βολικές αλλά διφορούμενες. Ο αναλυτής σας δείχνει την υποκείμενη μορφή πέντε πεδίων ώστε να γνωρίζετε ακριβώς τι προγραμματίστηκε.
    • Ο δημιουργός πεδίο-προς-πεδίο σας επιτρέπει να συνθέσετε ένα χρονοδιάγραμμα μία στήλη τη φορά και να βλέπετε την ανθρώπινη περιγραφή να ενημερώνεται ζωντανά, που είναι πολύ πιο γρήγορο από το να ξαναδιαβάζετε τη σελίδα man του cron για δέκατη φορά.

    Πού χρησιμοποιούνται οι εκφράσεις cron;

    Η σύνταξη cron εμφανίζεται όπου μια εργασία χρειάζεται να επαναλαμβάνεται σε ένα ρολόι. Τρεις από τις πιο συνηθισμένες επιφάνειες, με την ακριβή παγίδα για την οποία είναι γνωστή η καθεμία:

    • Χρονοδιαγράμματα αντιγράφων ασφαλείας. Η κλασική καταχώρηση `crontab -e` που κάνει dump μιας βάσης δεδομένων στο S3 στις 2 π.μ. καθημερινά ή περιστρέφει ένα αρχείο `pg_dump` την 1η κάθε μήνα. Μια γραμμή όπως `0 2 * * * /usr/local/bin/backup.sh` έχει σταλεί σε περισσότερους διακομιστές Linux από οποιαδήποτε άλλη γραμμή cron στην ιστορία. Βάλτε σωστά το λεπτό και την ώρα, ανακατευθύνετε το stderr κάπου ανθεκτικό και έχετε αντικαταστήσει μια χειροκίνητη λίστα ελέγχου με ένα σενάριο fire-and-forget.
    • Ενεργοποιήσεις `schedule` GitHub Actions. Το κλειδί `on.schedule.cron` στα `.github/workflows/*.yml` δέχεται τυπικό cron πέντε πεδίων, αλλά η εργασία τρέχει πάντα σε UTC και το GitHub θα παρακάμψει σιωπηλά μια ώρα εκτέλεσης αν η ουρά runner είναι απασχολημένη. Συνήθης μορφή: `cron: '0 9 * * 1-5'` για αποστολή μιας περίληψης Δευτέρα-Παρασκευή στις 9 π.μ. UTC. Κάντε προεπισκόπηση εδώ στην τοπική σας ζώνη πρώτα, ώστε να μην υποσχεθείτε μια περίληψη 9 π.μ. Λονδίνου που τελικά φτάνει στις 10 π.μ. BST.
    • AWS EventBridge Scheduler. Οι εκφράσεις cron EventBridge παίρνουν ένα έκτο πεδίο για το έτος και απαιτούν `?` αντί για `*` είτε στο πεδίο ημέρα-μήνα είτε ημέρα-εβδομάδας — το `cron(0 9 ? * MON-FRI *)` είναι η μετάφραση EventBridge του κλασικού cron εργάσιμων ημερών 9 π.μ. Χρησιμοποιείται για προγραμματισμένες κλήσεις Lambda, εκτελέσεις εργασιών ECS και εκκινήσεις μηχανών κατάστασης Step Function· η αναντιστοιχία με την κλασική σύνταξη cron είναι η νούμερο ένα πηγή σφαλμάτων `ValidationException` σε αναπτύξεις CloudFormation.

    Πώς μοιάζει μια πραγματική έκφραση cron;

    Πάρτε 0 9 * * 1-5 — ενεργοποιείται στις 9:00 π.μ., κάθε εργάσιμη. Διαβάζοντας τα πεδία από αριστερά προς τα δεξιά: 0 είναι το μηδενικό λεπτό της ώρας, 9 είναι 9 π.μ. στο 24ωρο ρολόι, * στην ημέρα-μήνα σημαίνει κάθε ημερολογιακή ημέρα, * στον μήνα σημαίνει κάθε μήνα και 1-5 στην ημέρα-εβδομάδας περιορίζει την ενεργοποίηση από Δευτέρα έως Παρασκευή (όπου 1 = Δευτέρα στην τυπική αρίθμηση cron). Επικολλήστε το στην είσοδο παραπάνω και ο αναλυτής επιβεβαιώνει Στις 09:00 π.μ., Δευτέρα έως Παρασκευή με τις επόμενες δέκα ημερομηνίες ενεργοποίησης που εμφανίζονται σε όποια ζώνη IANA επιλέξετε. Η ίδια πρόθεση σε σύνταξη AWS EventBridge είναι cron(0 9 ? * MON-FRI *) — σημειώστε το πεδίο έτους στο τέλος και το ? όπου το τυπικό cron θα χρησιμοποιούσε *. Η ίδια πρόθεση ως έκφραση Quartz (έξι πεδίων με κύρια δευτερόλεπτα) είναι 0 0 9 ? * MON-FRI. Τρεις διαφορετικές πλατφόρμες, τρεις διαφορετικές μορφές επιφάνειας, ένα υποκείμενο χρονοδιάγραμμα.

    Οι εκφράσεις cron είναι αμείλικτες με ακριβώς έναν τρόπο: ένα τυπογραφικό λάθος σας δίνει ένα συντακτικά έγκυρο χρονοδιάγραμμα που ενεργοποιείται σε λάθος χρόνο, χωρίς σφάλμα για να το πιάσετε στην αναθεώρηση κώδικα. Το να διαβάζετε `0 0 1 * *` και να γνωρίζετε ότι τρέχει τα μεσάνυχτα την 1η κάθε μήνα, όχι την 1η Ιανουαρίου, απαιτεί εξάσκηση. Ο αναλυτής παραπάνω μετατρέπει αυτή την εξάσκηση σε έναν έλεγχο δέκα δευτερολέπτων — επικολλήστε την έκφραση, διαβάστε τα Αγγλικά, σαρώστε τις επόμενες δέκα ώρες εκτέλεσης στην τοπική σας ζώνη και στείλτε το YAML γνωρίζοντας ότι η γραμμή cron κάνει πραγματικά ό,τι λέει το μήνυμα commit.

    Ποια είναι η διαφορά μεταξύ cron 5 πεδίων και 6 πεδίων;

    Το cron πέντε πεδίων είναι η κλασική γραμματική Unix με ανάλυση ενός λεπτού. Το cron έξι πεδίων προσθέτει μια κύρια στήλη δευτερολέπτων για προγραμματισμό υπο-λεπτού — χρησιμοποιείται από το Quartz και το @Scheduled του Spring. Το AWS EventBridge χρησιμοποιεί επίσης έξι πεδία, αλλά η επιπλέον στήλη του είναι ένα τελικό έτος, όχι δευτερόλεπτα.

    Τι σημαίνουν τα @hourly, @daily και @weekly;

    Ψευδώνυμα Vixie-cron που εισήχθησαν το 1987. @hourly = 0 * * * *, @daily = 0 0 * * *, @weekly = 0 0 * * 0, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *. @reboot ενεργοποιείται μία φορά κατά την εκκίνηση. Τα GitHub Actions και EventBridge απορρίπτουν αυτά τα ψευδώνυμα.

    Είναι η Κυριακή ημέρα 0 ή ημέρα 7 στο cron;

    Και τα δύο, στο κλασικό Vixie cron — τα 0 και 7 γίνονται αποδεκτά ώστε εύρη όπως 5-7 να διαβάζονται φυσικά ως Παρασκευή-έως-Κυριακή. Η Δευτέρα είναι πάντα 1, το Σάββατο είναι πάντα 6. Το Quartz και το AWS EventBridge χρησιμοποιούν διαφορετική σύμβαση: 1-7 με Κυριακή ως 1. Ελέγξτε τα έγγραφα της πλατφόρμας πριν υποθέσετε.

    Πώς χειρίζεται το cron τη θερινή ώρα;

    Εξαρτάται από τη ζώνη ώρας της μηχανής. Σε UTC (η προεπιλογή σε EventBridge, Kubernetes και GitHub Actions) η DST δεν υπάρχει. Σε μια τοπική ζώνη DST, το κλασικό Vixie cron παρακάμπτει εργασίες κατά το χάσμα της εαρινής ώρας και τις τρέχει δύο φορές κατά τη φθινοπωρινή επαναφορά· οι χρονοδιακόπτες systemd ενεργοποιούνται ακριβώς μία φορά.