Δημιουργός εκφράσεων Cron
Δημιουργήστε μια έκφραση cron πεδίο προς πεδίο, δείτε τις επόμενες εκτελέσεις σε οποιαδήποτε ζώνη ώρας και μετατρέψτε την σε μορφή systemd, Quartz ή AWS.
Με απλά λόγια
Έχουν οριστεί και η ημέρα του μήνα και η ημέρα της εβδομάδας: το κλασικό cron εκτελείται όταν ισχύει ΟΠΟΙΟΔΗΠΟΤΕ από τα δύο (όχι και τα δύο).
Εργαλείο δημιουργίας
| Πεδίο | Λειτουργία | Τιμή |
|---|---|---|
| Δευτερόλεπτο0–59 | ||
| Λεπτό0–59 | ||
| Ώρα0–23 | ||
| Ημέρα του μήνα1–31, L | ||
| Μήνας1–12 ή JAN–DEC | ||
| Ημέρα της εβδομάδας0–7 (0 και 7 = Κυριακή) ή SUN–SAT |
Επόμενες εκτελέσεις
Άλλες μορφές
- γραμμή crontab
- systemd OnCalendar=
- Quartz / Spring
- AWS EventBridge
Πώς να δημιουργήσετε μια έκφραση cron
- Πληκτρολογήστε ή επικολλήστε μια έκφραση στο Έκφραση cron ή διαλέξτε μία από τις Προεπιλογές. Γίνονται δεκτές και συντομεύσεις όπως
@dailyή@weekly. - Ή χρησιμοποιήστε το Εργαλείο δημιουργίας: για κάθε πεδίο επιλέξτε μια Λειτουργία (Κάθε, Κάθε N, Συγκεκριμένες τιμές, Εύρος ή Προσαρμοσμένο) και συμπληρώστε την Τιμή. Η έκφραση ενημερώνεται καθώς προχωράτε και η επεξεργασία της έκφρασης ενημερώνει το εργαλείο δημιουργίας.
- Επιλέξτε Προσθήκη πεδίου δευτερολέπτων (6 πεδία) αν ο προγραμματιστής εργασιών σας υποστηρίζει δευτερόλεπτα.
- Διαβάστε το χρονοδιάγραμμα Με απλά λόγια (η περιγραφή στα ελληνικά δεν είναι διαθέσιμη· εμφανίζεται στα αγγλικά) και ελέγξτε τη λίστα Επόμενες εκτελέσεις. Επιλέξτε τη Ζώνη ώρας του διακομιστή που εκτελεί την εργασία και Πόσες εκτελέσεις θα εμφανίζονται.
- Αντιγράψτε την έκφραση με το Αντιγραφή ή χρησιμοποιήστε μία από τις Άλλες μορφές.
Τα σφάλματα εξηγούνται πεδίο προς πεδίο, για παράδειγμα «Λεπτό: το 61 είναι εκτός ορίων (0–59)», ώστε να ξέρετε ακριβώς τι να διορθώσετε.
Τα πέντε πεδία του cron
Μια τυπική γραμμή cron (Vixie) έχει πέντε πεδία και μετά την εντολή:
| Πεδίο | Επιτρεπόμενες τιμές |
|---|---|
| Λεπτό | 0–59 |
| Ώρα | 0–23 |
| Ημέρα του μήνα | 1–31 |
| Μήνας | 1–12 ή JAN–DEC |
| Ημέρα της εβδομάδας | 0–7 (το 0 και το 7 είναι Κυριακή) ή SUN–SAT |
Κάθε πεδίο δέχεται * (κάθε τιμή), λίστα 1,15, εύρος 9-17, βήμα */15 (κάθε 15 μονάδες) ή εύρος με βήμα 0-30/10. Έτσι το */15 9-17 * * 1-5 σημαίνει κάθε 15 λεπτά από τις 9:00 έως τις 17:45, Δευτέρα έως Παρασκευή.
Ένας κανόνας εκπλήσσει πολλούς: όταν περιορίζονται και η Ημέρα του μήνα και η Ημέρα της εβδομάδας, το κλασικό cron εκτελείται όταν ισχύει οποιοδήποτε από τα δύο. Το 0 0 13 * 5 εκτελείται κάθε 13η και κάθε Παρασκευή, όχι μόνο την Παρασκευή και 13. Το εργαλείο εμφανίζει προειδοποίηση σε αυτή την περίπτωση.
Ώρες επόμενης εκτέλεσης και ζώνες ώρας
Το cron χρησιμοποιεί το ρολόι του μηχανήματος ή τη ρύθμιση CRON_TZ/TZ του crontab. Η λίστα Επόμενες εκτελέσεις υπολογίζεται για τη ζώνη ώρας που επιλέγετε, συμπεριλαμβανομένων των αλλαγών θερινής ώρας: την άνοιξη μια εργασία στις 2:30 μπορεί να παραλειφθεί, ενώ το φθινόπωρο μπορεί να εκτελεστεί μία ή δύο φορές, ανάλογα με την υλοποίηση. Για εργασίες που πρέπει να εκτελούνται ακριβώς μία φορά, προτιμήστε ώρες εκτός του διαστήματος 1:00–3:00 ή χρησιμοποιήστε UTC.
Vixie cron, χρονοδιακόπτες systemd, Quartz και AWS
- Οι χρονοδιακόπτες systemd χρησιμοποιούν το
OnCalendar=με διαφορετική σύνταξη:Mon..Fri *-*-* 09..17:00/15:00. Οι συνθήκες ημέρας της εβδομάδας και ημερομηνίας συνδυάζονται με AND και όχι με OR, οπότε ορισμένες εκφράσεις cron δεν έχουν ακριβές ισοδύναμο. - Τα Quartz και Spring βάζουν πρώτο ένα πεδίο δευτερολέπτων και μπορεί να προσθέτουν πεδίο έτους. Ένα από τα δύο πεδία ημέρας πρέπει να είναι
?και το Quartz αριθμεί τις ημέρες 1–7 ξεκινώντας από την Κυριακή, σε αντίθεση με το 0–6 του cron. Το εργαλείο γράφει τις ημέρες ως ονόματα (MON-FRI) για να αποφύγει αυτή την παγίδα. - Το AWS EventBridge χρησιμοποιεί
cron(λεπτά ώρες ημέρα μήνας ημέρα-εβδομάδας έτος): έξι πεδία, χωρίς δευτερόλεπτα, ένα?σε ένα από τα πεδία ημέρας και το έτος στο τέλος.
Το τυπικό cron δεν έχει πεδίο δευτερολέπτων. Η μορφή 6 πεδίων με δευτερόλεπτα υποστηρίζεται από πολλές βιβλιοθήκες (node-cron, Spring, Quartz), όχι όμως από το crontab του συστήματος. Όλοι οι υπολογισμοί γίνονται τοπικά στο πρόγραμμα περιήγησής σας.
Συχνές ερωτήσεις
Πώς εκτελώ μια εργασία κάθε 5 λεπτά;
Χρησιμοποιήστε */5 * * * *. Η εργασία εκτελείται στα λεπτά 0, 5, 10… κάθε ώρας.
Πώς εκτελώ μια εργασία την τελευταία ημέρα του μήνα;
Πολλοί προγραμματιστές εργασιών δέχονται L στο πεδίο ημέρας του μήνα: 0 18 L * *. Με απλό Vixie cron, εκτελέστε την εργασία καθημερινά τις ημέρες 28–31 και ελέγξτε μέσα στο σενάριο αν η αυριανή είναι η 1η.
Τι κάνει το @reboot;
Εκτελεί την εντολή μία φορά, όταν ξεκινά ο δαίμονας cron. Δεν έχει χρονοδιάγραμμα, οπότε το εργαλείο δεν μπορεί να εμφανίσει ώρες εκτέλεσης για αυτό.
Γιατί η εργασία μου δεν εκτελείται την ώρα που φαίνεται;
Ελέγξτε τη ζώνη ώρας του διακομιστή, το crontab του χρήστη σε σχέση με το /etc/crontab (που έχει επιπλέον πεδίο χρήστη) και το PATH: το cron ξεκινά με ελάχιστο περιβάλλον.
Το 0 ή το 7 είναι Κυριακή;
Και τα δύο. Στο πεδίο ημέρας της εβδομάδας, το 0 και το 7 σημαίνουν Κυριακή, το 1 Δευτέρα και το 6 Σάββατο.
Σχετικά εργαλεία
- Μετατροπέας Unix timestamp Μετατρέψτε Unix timestamp σε δευτερόλεπτα ή χιλιοστά σε ευανάγνωστες ημερομηνίες (τοπική ώρα, UTC, ISO 8601) και μετατρέψτε κάθε ημερομηνία ξανά σε epoch.
- Μετατροπέας ζωνών ώρας Μετατρέψτε μια ημερομηνία και ώρα από μία ζώνη ώρας σε πολλές άλλες ταυτόχρονα, με αυτόματη αντιμετώπιση της θερινής ώρας. Αναζητήστε πόλη ή ζώνη IANA.
- Αριθμομηχανή chmod Μετατρέψτε δικαιώματα Unix ανάμεσα σε πλαίσια επιλογής, οκταδική (755) και συμβολική (rwxr-xr-x) γραφή, με setuid, setgid, sticky bit και εντολές chmod.