Εκφράσεις Cron Αποκρυπτογραφημένες: Προγραμματίστε Οτιδήποτε
Χρειάζεστε να εκτελείτε ένα αντίγραφο ασφαλείας βάσης δεδομένων κάθε βράδυ στις 3 π.μ. Ή να στέλνετε μια αναφορά κάθε Δευτέρα το πρωί. Ή να καθαρίζετε μια κρυφή μνήμη κάθε 15 λεπτά. Σε διακομιστές Linux και Unix, το εργαλείο για αυτό είναι το cron, και ο τρόπος που λέτε στο cron πότε να εκτελεί κάτι είναι με μια έκφραση cron.
Οι εκφράσεις cron φαίνονται τρομακτικές με την πρώτη ματιά. Το 0 3 * * * ή το */15 9-17 * * 1-5 μπορεί να φαίνεται σαν ακατάληπτο αν δεν γνωρίζετε το μοτίβο. Αλλά η σύνταξη είναι εκπληκτικά απλή μόλις κατανοήσετε τα πέντε πεδία.
Τα Πέντε Πεδία
Κάθε τυπική έκφραση cron έχει ακριβώς πέντε πεδία, διαχωρισμένα με κενά. Κάθε πεδίο αντιπροσωπεύει μια χρονική μονάδα:
┌───────────── λεπτό (0-59)
│ ┌───────────── ώρα (0-23)
│ │ ┌───────────── ημέρα μήνα (1-31)
│ │ │ ┌───────────── μήνας (1-12)
│ │ │ │ ┌───────────── ημέρα εβδομάδας (0-7, όπου 0 και 7 είναι Κυριακή)
│ │ │ │ │
* * * * *
Αυτό είναι όλο. Πέντε πεδία, από αριστερά προς τα δεξιά: λεπτό, ώρα, ημέρα μήνα, μήνας, ημέρα εβδομάδας.
Γνωρίζατε; Το όνομα "cron" προέρχεται από την ελληνική λέξη "χρόνος," που σημαίνει χρόνος. Η δαίμονας cron (διεργασία παρασκηνίου) αποτελεί βασικό μέρος των λειτουργικών συστημάτων τύπου Unix από το 1975.
Οι Ειδικοί Χαρακτήρες
Αστερίσκος (*) — Κάθε Τιμή
Ένας αστερίσκος σημαίνει "κάθε δυνατή τιμή" για αυτό το πεδίο.
* * * * * = κάθε λεπτό κάθε ώρας κάθε ημέρας.
Κόμμα (,) — Πολλαπλές Τιμές
Ένα κόμμα διαχωρίζει επιμέρους τιμές.
0 9,12,18 * * * = στο λεπτό 0 των ωρών 9, 12 και 18 (9:00 π.μ., 12:00 μ.μ., 6:00 μ.μ.).
Παύλα (-) — Εύρος Τιμών
Μια παύλα ορίζει ένα εύρος.
0 9-17 * * * = στο λεπτό 0 κάθε ώρας από 9 έως 17 (9:00 π.μ. έως 5:00 μ.μ., ανά ώρα).
Κάθετος (/) — Τιμές Βήματος
Ένας κάθετος ορίζει διαστήματα.
*/15 * * * * = κάθε 15 λεπτά (λεπτό 0, 15, 30, 45 κάθε ώρας).
0 */2 * * * = κάθε 2 ώρες στο λεπτό 0 (μεσάνυχτα, 2 π.μ., 4 π.μ., ...).
Ανάγνωση Εκφράσεων Cron: Εξάσκηση
Ας δουλέψουμε σε κοινά παραδείγματα. Για κάθε ένα, διαβάστε τα πέντε πεδία από αριστερά προς τα δεξιά.
0 3 * * * — Καθημερινά στις 3:00 π.μ.
| Πεδίο | Τιμή | Νόημα |
|---|---|---|
| Λεπτό | 0 | Στο λεπτό 0 |
| Ώρα | 3 | Της ώρας 3 (3 π.μ.) |
| Ημέρα μήνα | * | Κάθε ημέρα |
| Μήνας | * | Κάθε μήνα |
| Ημέρα εβδομάδας | * | Κάθε ημέρα της εβδομάδας |
Μετάφραση: "Στις 3:00 π.μ. κάθε ημέρα." Η κλασική επιλογή για νυχτερινά αντίγραφα ασφαλείας.
*/15 * * * * — Κάθε 15 Λεπτά
| Πεδίο | Τιμή | Νόημα |
|---|---|---|
| Λεπτό | */15 | Κάθε 15 λεπτά |
| Ώρα | * | Κάθε ώρα |
| Ημέρα μήνα | * | Κάθε ημέρα |
| Μήνας | * | Κάθε μήνα |
| Ημέρα εβδομάδας | * | Κάθε ημέρα |
Μετάφραση: "Κάθε 15 λεπτά, όλο το εικοσιτετράωρο." Συνηθισμένο για ελέγχους υγείας και ανανεώσεις κρυφής μνήμης.
0 9 * * 1-5 — Εργάσιμες Ημέρες στις 9:00 π.μ.
| Πεδίο | Τιμή | Νόημα |
|---|---|---|
| Λεπτό | 0 | Στο λεπτό 0 |
| Ώρα | 9 | Της ώρας 9 |
| Ημέρα μήνα | * | Κάθε ημέρα |
| Μήνας | * | Κάθε μήνα |
| Ημέρα εβδομάδας | 1-5 | Δευτέρα έως Παρασκευή |
Μετάφραση: "Στις 9:00 π.μ., Δευτέρα έως Παρασκευή." Τέλειο για καθημερινές εκθέσεις εργασίας.
0 0 1 * * — Πρώτη Ημέρα Κάθε Μήνα
| Πεδίο | Τιμή | Νόημα |
|---|---|---|
| Λεπτό | 0 | Στο λεπτό 0 |
| Ώρα | 0 | Της ώρας 0 (μεσάνυχτα) |
| Ημέρα μήνα | 1 | Την 1η |
| Μήνας | * | Κάθε μήνα |
| Ημέρα εβδομάδας | * | Οποιαδήποτε ημέρα της εβδομάδας |
Μετάφραση: "Τα μεσάνυχτα της πρώτης ημέρας κάθε μήνα." Χρησιμοποιείται για μηνιαίες αναφορές, τιμολόγηση ή καθαρισμούς.
30 8 * * 1 — Δευτέρες στις 8:30 π.μ.
| Πεδίο | Τιμή | Νόημα |
|---|---|---|
| Λεπτό | 30 | Στο λεπτό 30 |
| Ώρα | 8 | Της ώρας 8 |
| Ημέρα μήνα | * | Κάθε ημέρα |
| Μήνας | * | Κάθε μήνα |
| Ημέρα εβδομάδας | 1 | Δευτέρα |
Μετάφραση: "Στις 8:30 π.μ. κάθε Δευτέρα." Ιδανικό για εβδομαδιαίες ειδοποιήσεις ομάδας.
Γράψτε τις Δικές σας Εκφράσεις Cron
Δείτε μια συστηματική προσέγγιση:
- Ξεκινήστε με το πότε. "Κάθε ημέρα στις 3 π.μ." ή "κάθε 5 λεπτά κατά τις εργάσιμες ώρες."
- Συμπληρώστε τα πεδία από αριστερά προς τα δεξιά. Ξεκινήστε με λεπτό, μετά ώρα, ημέρα μήνα, μήνας, ημέρα εβδομάδας.
- Χρησιμοποιήστε
*για "κάθε." Αν δεν σας ενδιαφέρει ένα πεδίο, χρησιμοποιήστε*. - Δοκιμάστε πριν αναπτύξετε. Πάντα επαληθεύετε ότι η έκφρασή σας παράγει το πρόγραμμα που περιμένετε.
Γρήγορη Αναφορά Κοινών Μοτίβων
| Πρόγραμμα | Έκφραση |
|---|---|
| Κάθε λεπτό | * * * * * |
| Κάθε 5 λεπτά | */5 * * * * |
| Κάθε ώρα | 0 * * * * |
| Κάθε ημέρα τα μεσάνυχτα | 0 0 * * * |
| Κάθε ημέρα στις 3:00 π.μ. | 0 3 * * * |
| Κάθε Δευτέρα στις 9:00 π.μ. | 0 9 * * 1 |
| Εργάσιμες στις 8:30 π.μ. | 30 8 * * 1-5 |
| Πρώτη κάθε μήνα | 0 0 1 * * |
| Κάθε 15 λεπτά, εργάσιμες ώρες | */15 9-17 * * 1-5 |
| Δύο φορές τη μέρα (9 π.μ. και 6 μ.μ.) | 0 9,18 * * * |
| Κάθε Κυριακή στις 2:00 π.μ. | 0 2 * * 0 |
Συνηθισμένα Λάθη
Ξεχνώντας ότι οι Ώρες είναι 0-23
Η ώρα 13 είναι 1:00 μ.μ., όχι ώρα 1. Ένα συνηθισμένο λάθος είναι να γράφετε 0 1 * * * νομίζοντας ότι εκτελείται στις 1:00 μ.μ. ενώ στην πραγματικότητα εκτελείται στις 1:00 π.μ.
Σύγχυση Ημέρας Εβδομάδας
Η Κυριακή μπορεί να είναι 0 ή 7 (και τα δύο ισχύουν). Η Δευτέρα είναι 1, το Σάββατο είναι 6. Μερικοί περιμένουν ότι η Δευτέρα είναι 0.
Αλληλεπίδραση Ημέρας Μήνα και Ημέρας Εβδομάδας
Αν καθορίσετε και ημέρα μήνα και ημέρα εβδομάδας (κανένα δεν είναι *), τα περισσότερα συστήματα cron εκτελούν την εργασία όταν ικανοποιείται οποιαδήποτε από τις δύο συνθήκες, όχι και οι δύο. Αυτό εκπλήσσει πολλούς.
Προειδοποίηση Η έκφραση 0 9 15 * 1 ΔΕΝ σημαίνει "στις 9 π.μ. της 15ης, αλλά μόνο αν είναι Δευτέρα." Σημαίνει "στις 9 π.μ. της 15ης κάθε μήνα ΚΑΙ στις 9 π.μ. κάθε Δευτέρας." Αυτή είναι μια συνηθισμένη πηγή απροσδόκητης συμπεριφοράς.
Επίγνωση Ζώνης Ώρας
Το cron εκτελείται στην τοπική ζώνη ώρας του διακομιστή. Αν ο διακομιστής σας είναι σε UTC και εσείς βρίσκεστε στην Αθήνα (UTC+2), μια εργασία cron 0 9 * * * εκτελείται στις 11:00 π.μ. ώρα σας. Πάντα ελέγχετε τη ζώνη ώρας του διακομιστή σας.
Συμβουλή Δοκιμάστε και οπτικοποιήστε τις εκφράσεις cron πριν τις αναπτύξετε: Πώς να Διαβάζετε και να Δοκιμάζετε Εκφράσεις Cron. Δείτε τους επόμενους χρόνους εκτέλεσης και επιβεβαιώστε ότι το πρόγραμμα αντιστοιχεί σε αυτό που σκοπεύετε.
Δημιουργήστε και δοκιμάστε τις εκφράσεις cron σας:
Δωρεάν, άμεσο και χωρίς εγγραφή.