Crontab στο Linux: ΠΑΡΑΔΕΙΓΜΑΤΑ Προγραμματισμού Εργασίας
⚡ Έξυπνη Σύνοψη
Το Crontab στο Linux προγραμματίζει εντολές ώστε να εκτελούνται αυτόματα σε καθορισμένες ώρες, ημερομηνίες ή διαστήματα χρησιμοποιώντας το daemon cron, επιτρέποντας στους διαχειριστές να αυτοματοποιούν τα αντίγραφα ασφαλείας, τον καθαρισμό αρχείων καταγραφής, τις ειδοποιήσεις και την τακτική συντήρηση του συστήματος χωρίς καμία χειροκίνητη παρέμβαση.

Το Crontab, συντομογραφία του cron table, είναι το αρχείο διαμόρφωσης και η εντολή που οδηγούν Linux προγραμματισμός εργασιών. Οι παρακάτω ενότητες εξηγούν τη μορφή crontab, τις εντολές για την προσθήκη, τη λίστα και την αφαίρεση εργασιών, τις ειδικές συμβολοσειρές @ και έτοιμα προς χρήση παραδείγματα προγραμματισμού.
Τι είναι το crontab;
Το Cron πήρε το όνομά του από την ελληνική λέξη «Χρόνος», που σημαίνει χρόνος. Είναι μια διεργασία συστήματος (ένας δαίμονας) που εκτελεί αυτόματα εργασίες βάσει ενός καθορισμένου χρονοδιαγράμματος. Το Cron είναι ένα σύνολο εντολών που χρησιμοποιούνται για την εκτέλεση τακτικών προγραμματισμένων εργασιών. Το Crontab σημαίνει «cron table» και σας επιτρέπει να χρησιμοποιήσετε τον προγραμματιστή εργασιών cron για να εκτελέσετε αυτές τις εργασίες.
Το Crontab είναι επίσης το όνομα του προγράμματος που χρησιμοποιείται για την επεξεργασία αυτού του χρονοδιαγράμματος. Οδηγείται από ένα αρχείο crontab — ένα αρχείο διαμόρφωσης που παραθέτει τις εντολές κελύφους που θα εκτελούνται περιοδικά στο καθορισμένο χρονοδιάγραμμα.
Γιατί να χρησιμοποιήσετε Cron Jobs;
Ακολουθούν οι κύριοι λόγοι για τη χρήση εργασιών cron στο Linux:
- Λαμβάνει προγραμματισμένα αντίγραφα ασφαλείας των αρχείων καταγραφής ή των βάσεων δεδομένων.
- Διαγράφει αυτόματα τα παλιά αρχεία καταγραφής.
- Archiδιαγράφει και εκκαθαρίζει πίνακες βάσης δεδομένων.
- Αποστέλλει ειδοποιήσεις μέσω email, όπως ενημερωτικά δελτία ή υπενθυμίσεις λήξης κωδικού πρόσβασης.
- Εκτελεί τακτικό καθαρισμό των δεδομένων που είναι αποθηκευμένα στην προσωρινή μνήμη.
- Αυτοματοποιεί επαναλαμβανόμενες εργασίες Unix και Linux.
- Αυτοματοποιεί την τακτική συντήρηση του συστήματος.
Πώς να χρησιμοποιήσετε το cron στο Linux;
Το πακέτο συστήματος Linux περιλαμβάνει ένα χρήσιμο χρονοπρογραμματιστή εργασιών με το όνομα crontab. Το Crontab είναι δημοφιλές επειδή μια εργασία μπορεί να προγραμματιστεί να εκτελείται ως χρήστης root, γεγονός που διευκολύνει τις αυτοματοποιημένες αλλαγές στο σύστημα. Απλώς αλλάζετε την εργασία μία φορά και στη συνέχεια περιμένετε μέχρι να ενεργοποιηθεί ξανά σύμφωνα με το χρονοδιάγραμμα.
Μορφή Crontab Linux
Μια καταχώρηση crontab Linux έχει έξι πεδία. Τα πρώτα πέντε πεδία ορίζουν την ώρα και την ημερομηνία εκτέλεσης και το έκτο πεδίο περιέχει την εντολή εκτέλεσης.
Σύνταξη Crontab:
[Minute] [hour] [Day_of_the_Month] [Month_of_the_Year] [Day_of_the_Week] [command]
Το παρακάτω διάγραμμα αντιστοιχίζει κάθε αστερίσκο σε μια καταχώρηση crontab στο πεδίο που ελέγχει, από λεπτό έως ημέρα της εβδομάδας, ακολουθούμενο από την εντολή εκτέλεσης.
Τα πέντε πεδία ώρας δέχονται τις εξής τιμές: λεπτό (0–59), ώρα (0–23), ημέρα του μήνα (1–31), μήνας (1–12 ή ιαν–δεκ) και ημέρα της εβδομάδας (0–7, όπου το 0 και το 7 σημαίνουν και τα δύο Κυριακή). Ελέγχετε κάθε πεδίο με αυτούς τους ειδικούς χαρακτήρες:
- Αστερίσκος (*): Αντιστοιχεί σε κάθε πιθανή τιμή για αυτό το πεδίο.
- Ορίστε ένα εύρος: Χρησιμοποιήστε παύλα για να ορίσετε ένα εύρος, όπως 1-10, 30-40, Ιαν-Μάρ ή Δε-Τετ.
- Ορίστε πολλαπλές περιοχές: Χρησιμοποιήστε κόμματα για να συνδυάσετε εύρη, όπως απρ-ιουν, οκτ-δεκ.
Πώς να προσθέσετε/τροποποιήσετε το Crontab
Οι χρήστες μπορούν να επεξεργαστούν τις δικές τους εργασίες crontab με την ακόλουθη εντολή crontab. Η επιλογή -u στοχεύει το crontab ενός συγκεκριμένου χρήστη, επομένως δώστε το όνομα χρήστη όπως φαίνεται στα παρακάτω παραδείγματα:
$ crontab -u -e
Η παραπάνω εντολή ανοίγει την προσωπική διαμόρφωση crontab για το σύστημά σας, την οποία μπορείτε να επεξεργαστείτε στον προεπιλεγμένο επεξεργαστή κειμένου.
Δεν χρειάζεται να επανεκκινήσετε το cron. Οι αλλαγές σας καταχωρούνται αυτόματα. Για να δείτε τις τρέχουσες εργασίες σας, χρησιμοποιήστε:
$ crontab -l
Για να καταργήσετε τις εργασίες crontab, χρησιμοποιήστε την ακόλουθη εντολή:
$ crontab -r
Για να προσθέσετε ή να ενημερώσετε μια εργασία στο crontab, χρησιμοποιήστε την παρακάτω εντολή:
crontab -e
Για να επεξεργαστείτε το crontab ενός άλλου χρήστη, ονομάστε τον χρήστη με την επιλογή -u:
crontab -u username -e
Πώς να καταχωρήσετε το Crontab
Για να δείτε τις καταχωρήσεις crontab του τρέχοντος χρήστη:
crontab -l
Για να δείτε τις καταχωρήσεις crontab ενός συγκεκριμένου χρήστη:
crontab -u username -l
Σημαντικά παραδείγματα Crontab
Ακολουθούν μερικά σημαντικά, έτοιμα προς χρήση παραδείγματα χρονοδιαγραμμάτων crontab:
| Περιγραφή | εντολή |
|---|---|
| Εκτελεί τις διάφορες εργασίες προγραμματισμού. Η παρακάτω εντολή εκτελείται στις 7 π.μ. και 5 μ.μ. καθημερινά. |
0 7,17 * * * /scripts/script.sh
|
| Εκτελεί μια εργασία cron κάθε 5 λεπτά. |
*/5* * * * * /scripts/script.sh
|
| Εκτελεί την εργασία κάθε Monday στις 5 π.μ. Αυτό είναι χρήσιμο για εβδομαδιαίες εργασίες όπως ο καθαρισμός του συστήματος. |
0 5 * * mon /scripts/script.sh
|
| Εκτελεί το σενάριό σας σε διάστημα 3 λεπτών. |
*/3 * * * * /scripts/monitor.sh
|
| Προγραμματίζει μια εργασία cron που εκτελείται σε συγκεκριμένους μήνες — εδώ, Φεβρουάριο, Ιούνιο και Σεπτέμβριο. |
* * * feb,jun,sep * /script/script.sh
|
| Εκτελείται σε επιλεγμένες ημέρες. Αυτό το παράδειγμα εκτελεί κάθε Monday και Τετάρτη στις 5 το απόγευμα. |
0 17 * * mon,wed /script/script.sh
|
| Επιτρέπει στο cron να εκτελείται το πρώτο Σάββατο κάθε μήνα. |
0 2 * * sat [ $(date +%d) -le 06 ] && /script/script.sh |
| Εκτελεί ένα σενάριο σε διάστημα 6 ωρών, με τη διαμόρφωση που ακολουθεί. |
0 */6 * * * /scripts/script.sh
|
| Προγραμματίζει μια εργασία για εκτέλεση δύο φορές Monday και Τρίτη. Χρησιμοποιήστε τις παρακάτω ρυθμίσεις για να το κάνετε. |
0 4,17 * * mon,tue /scripts/script.sh
|
| Προγραμματίζει μια εργασία cron για εκτέλεση κάθε 15 δευτερόλεπτα. |
* * * * * /scripts/script.sh * * * * * sleep 15; /scripts/script.sh |
| Προγραμματίζει εργασίες σε ετήσια βάση. Το @yearly είναι παρόμοιο με το "0 0 1 1 *". Εκτελεί την εργασία μία φορά το χρόνο, τα μεσάνυχτα της 1ης Ιανουαρίου — χρήσιμο για ευχές για την Πρωτοχρονιά. |
@yearly /scripts/script.sh
|
| Εκτελεί εργασίες σε μηνιαία βάση. Η συνάρτηση @monthly είναι παρόμοια με την συνάρτηση "0 0 1 * *". Εκτελεί την εργασία τα μεσάνυχτα της πρώτης ημέρας κάθε μήνα. |
@monthly /scripts/script.sh
|
| Εκτελεί πολλαπλές εργασίες χρησιμοποιώντας μία μόνο καταχώρηση cron. |
* * * * * /scripts/script.sh; /scripts/scrit2.sh |
| Προγραμματίζει εργασίες σε εβδομαδιαία βάση. Το @weekly είναι παρόμοιο με το "0 0 * * 0". Εκτελεί εβδομαδιαίες εργασίες, όπως καθαρισμό συστήματος τα μεσάνυχτα κάθε Κυριακή. |
@weekly /bin/script.sh
|
| Προγραμματίζει εργασίες σε καθημερινή βάση. Η συνάρτηση @daily είναι παρόμοια με την συνάρτηση “0 0 * * *”. Εκτελεί την εργασία μία φορά την ημέρα, τα μεσάνυχτα. |
@daily /scripts/script.sh
|
| Εκτελεί εργασίες ανά ώρα. Η συνάρτηση @hourly είναι παρόμοια με το "0 * * * *". Εκτελεί την εργασία στην αρχή κάθε ώρας. |
@hourly /scripts/script.sh
|
| Εκτελεί εργασίες κατά την επανεκκίνηση του συστήματος. Η συνάρτηση @reboot είναι χρήσιμη για εργασίες που θα έπρεπε να εκτελείται το σύστημα κατά την εκκίνηση, επιτρέποντας την αυτόματη εκκίνηση των εργασιών παρασκηνίου. |
@reboot /scripts/script.sh
|

