Cron Jobs: Ολοκληρωμένο σεμινάριο για αρχάριους

Cron Jobs Complete Beginners Tutorial



Το Cron είναι το πιο χρήσιμο βοηθητικό πρόγραμμα σε λειτουργικό σύστημα Linux ή UNIX που επιτρέπει την εκτέλεση εντολών ή σεναρίων σε ένα δεδομένο πρόγραμμα χωρίς καμία παρέμβαση του χρήστη. Οι προγραμματισμένες εντολές και δέσμες ενεργειών ονομάζονται επίσης cron jobs. Χρησιμοποιείται κυρίως για την αυτοματοποίηση επαναλαμβανόμενων εργασιών, όπως εκτέλεση προγραμματισμένων αντιγράφων ασφαλείας, καθαρισμό προσωρινών αρχείων, συντήρηση συστήματος και διάφορες άλλες επαναλαμβανόμενες εργασίες. Είναι παρόμοιο με το Task Scheduler στο λειτουργικό σύστημα Windows.

Σε αυτό το σεμινάριο, θα σας παρέχουμε τη βασική εισαγωγή όλων όσων πρέπει να κατανοήσετε για τον προγραμματισμό μιας εργασίας με cron. Αυτό περιλαμβάνει βασική σύνταξη του cron, επεξεργασία αρχείου crontab, προγραμματισμό εργασίας με cron με λίγα παραδείγματα, προβολή εργασίας cron κ.λπ.







Βασικά στοιχεία του Cron Job

Ας κατανοήσουμε μερικά βασικά για μια δουλειά cron.



Τι είναι το Crond;

Ο Crond είναι ο δαίμονας στο σύστημα Linux που εκτελείται στο παρασκήνιο και ελέγχει κάθε λεπτό για να διαπιστώσει εάν έχει προγραμματιστεί κάποια εργασία εκείνη τη στιγμή. Εάν υπάρχει, εκτελεί αυτή τη δουλειά, αλλιώς παραμένει ανενεργή.



Σύνταξη Cron Job

Η σύνταξη για την εργασία cron έχει ως εξής:





* * * * *εντολή/γραφή

Από αριστερά:

  • Το πρώτο * αντιστοιχεί σε πρακτικά (0-59)
  • Το δεύτερο * αντιστοιχεί σε oursρες (0-23)
  • Το τρίτο * αντιστοιχεί στην Ημέρα του μήνα (1-31)
  • Το τέταρτο * αντιστοιχεί στον μήνα του έτους (1-12)
  • Το πέμπτο * αντιστοιχεί στην Ημέρα της εβδομάδας (0-6, Κυριακή έως Σάββατο)

Για να καθορίσετε πολλές τιμές σε ένα πεδίο, χρησιμοποιήστε τα ακόλουθα σύμβολα χειριστή:



  1. Αστερίσκος (*): Για να καθορίσετε όλες τις πιθανές τιμές για ένα πεδίο
  2. Παύλα (-): Προς το μικρό προσδιορίστε ένα εύρος τιμών
  3. Το κόμμα (,): Για να καθορίσετε μια λίστα τιμών
  4. Διαχωριστής (/): Για να καθορίσετε μια τιμή βήματος

Επεξεργασία αρχείου Crontab

Το Crontab είναι ένα αρχείο που περιέχει τις προγραμματισμένες εργασίες σε μια συγκεκριμένη σύνταξη. Υπάρχουν δύο τύποι αρχείων crontab. το ένα για εργασίες cron για το συγκεκριμένο σύστημα και το άλλο για εργασίες cron για συγκεκριμένους χρήστες.

System cron jobs

Οι εργασίες cron σε όλο το σύστημα βρίσκονται στο /etc/crontab αρχείο και /etc/cron.d καταλόγου και εκτελούνται /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly και /etc/cron.monthly. Μόνο ένας διαχειριστής συστήματος μπορεί να έχει πρόσβαση σε αυτά τα αρχεία.

Ένας διαχειριστής συστήματος μπορεί να ορίσει μια εργασία cron χρησιμοποιώντας την ακόλουθη εντολή:

$νανο /και τα λοιπά/crontab

Εδώ είναι η σύνταξη της εργασίας στο /etc/crontab αρχείο:

# λεπτό ώρα ημέρα μήνα μηνιαίας ημέρας εντολή ονόματος χρήστη
* * * * *χρήστης 1ifconfig

Εργασίες cron για συγκεκριμένους χρήστες

Οι συγκεκριμένες για τον χρήστη εργασίες cron βρίσκονται στο / var / spool / cron / crontabs Ευρετήριο. Παρόλο που μπορείτε να επεξεργαστείτε αυτές τις εργασίες με μη αυτόματο τρόπο, συνιστάται η επεξεργασία αυτών των εργασιών χρησιμοποιώντας την εντολή crontab -e.

Ένας τυπικός χρήστης μπορεί να ορίσει μια εργασία cron χρησιμοποιώντας την ακόλουθη εντολή:

$crontab-Και

Για παράδειγμα, εάν έχετε συνδεθεί ως δοκιμαστικός χρήστης, η εκτέλεση της εντολής crontab -e θα επεξεργαστεί το αρχείο crontab για τον δοκιμαστικό χρήστη. Ομοίως, εάν είστε συνδεδεμένοι ως χρήστης ρίζας, η εντολή crontab -e θα επεξεργαστεί το αρχείο crontab για τον χρήστη root.

Εκδώστε την παρακάτω εντολή στο τερματικό για να επεξεργαστείτε το αρχείο crontab για οποιονδήποτε άλλο χρήστη:

$sudocrontab-u <όνομα χρήστη>> -Και

Για παράδειγμα, εάν έχετε συνδεθεί ως χρήστης test1 και θέλετε να επεξεργαστείτε το αρχείο crontab για τον χρήστη test2, η εντολή θα είναι:

$sudocrontab-uδοκιμή2-Και

Εδώ είναι η σύνταξη της εργασίας cron που μπορεί να προστεθεί στο αρχείο crontab:

# μ ω ημέρα μηνιαίου μήνα ημερήσια εντολή
* * * * * ifconfig

Μπορείτε να δείτε σε συγκεκριμένες εργασίες χρήστη ότι δεν έχει καταχωρηθεί όνομα χρήστη.

Εντολές Crontab

Η εντολή crontab χρησιμοποιείται για την επεξεργασία, τη λίστα και την κατάργηση των εργασιών cron:

  • crontab -e Για να επεξεργαστείτε το αρχείο crontab του τρέχοντος χρήστη
  • crontab -l Για να εμφανίσετε τα περιεχόμενα του αρχείου crontab
  • crontab -u [όνομα χρήστη] Για να επεξεργαστείτε το αρχείο crontab οποιουδήποτε άλλου χρήστη
  • crontab -r Για να καταργήσετε το αρχείο crontab του τρέχοντος χρήστη
  • crontab -i Για να εμφανίσετε ένα μήνυμα προτού αφαιρέσετε το αρχείο crontab του τρέχοντος χρήστη

Προγραμματισμός εργασίας με Cron

Με το Cron, μπορείτε να εκτελέσετε μια εργασία σε μια συγκεκριμένη ώρα, ημερομηνία και διαστήματα με ελάχιστη μονάδα σε λεπτά, δηλαδή, μπορείτε να εκτελέσετε μια εργασία κάθε λεπτό.

Για να προγραμματίσετε μια εργασία με το cron, ανοίξτε το αρχείο crontab χρησιμοποιώντας τη μέθοδο που συζητήθηκε στην προηγούμενη ενότητα. Μόλις ανοίξετε το αρχείο crontab, θα σας ζητηθεί να επιλέξετε έναν επεξεργαστή κειμένου. Πληκτρολογήστε έναν αριθμό για να επιλέξετε τον επεξεργαστή κειμένου που προτιμάτε. Κάντε κύλιση προς τα κάτω μέχρι το κάτω μέρος του αρχείου και προσθέστε εργασίες στη σύνταξη που περιγράφεται παραπάνω. Κάθε γραμμή σε ένα αρχείο καθορίζει μία εντολή. Οι πέντε πρώτες καταχωρήσεις στη γραμμή καθορίζουν την προγραμματισμένη ώρα και η τελευταία καταχώριση καθορίζει ποια εντολή ή σενάριο πρέπει να εκτελεστεί.

Παράδειγμα:

Η ακόλουθη γραμμή στο αρχείο crontab θα προγραμματίσει την εργασία cron για την εκτέλεση της εντολής/δέσμης ενεργειών κάθε 30ο λεπτό τις τελευταίες 5 ώρες κάθε μέρα της εβδομάδας από Δευτέρα έως Σάββατο.

* /30 5 * * 1-6εντολή/γραφή

Λεπτά

Σε αυτό το πεδίο, καθορίζουμε τα λεπτά όταν θέλουμε να εκτελεστεί η εντολή. Καθορίζεται από 0 έως 59. Το * σε αυτό το πεδίο σημαίνει την εκτέλεση της εργασίας κάθε λεπτό. Στην παραπάνω γραμμή crontab, το */30 λέει στην εργασία cron να εκτελεί την καθορισμένη εντολή/δέσμη ενεργειών κάθε 30 λεπτά.

Ωρες

Σε αυτό το πεδίο, καθορίζουμε τις ώρες που θέλουμε να εκτελεστεί η εντολή. Καθορίζεται από 0 έως 23. Το * σε αυτό το πεδίο σημαίνει την εκτέλεση της εργασίας κάθε ώρα. Στην παραπάνω γραμμή crontab, η τιμή 5 λέει στην εργασία cron να εκτελεί την καθορισμένη εντολή/δέσμη ενεργειών κάθε πέντε ώρες.

Ημέρα του μήνα

Σε αυτό το πεδίο, καθορίζουμε τις συγκεκριμένες ημέρες μηνών που θέλουμε να εκτελεστεί η εντολή. Ορίζεται από το 1 έως το 31. Το * σε αυτό το πεδίο σημαίνει κάθε μέρα. Στην παραπάνω γραμμή crontab, το * λέει στην εργασία cron να εκτελεί την καθορισμένη εντολή/δέσμη ενεργειών κάθε μέρα.

Μήνας του χρόνου

Σε αυτό το πεδίο, καθορίζουμε τους συγκεκριμένους μήνες που θέλουμε να εκτελεστεί η εντολή. Καθορίζεται από το 1 έως το 12. Το * σε αυτό το πεδίο σημαίνει κάθε μήνα. Στην παραπάνω γραμμή crontab, το * λέει στην εργασία cron να εκτελεί την καθορισμένη εντολή/δέσμη ενεργειών κάθε μήνα.

Μερα της ΕΒΔΟΜΑΔΑΣ

Σε αυτό το πεδίο, καθορίζουμε τις συγκεκριμένες ημέρες της εβδομάδας όταν θέλουμε να εκτελεστεί η εντολή. Καθορίζεται από 0 έως 6 από Κυριακή έως Σάββατο (0 για Κυριακή και 6 για Σάββατο). Το * σε αυτόν τον τομέα σημαίνει κάθε μέρα σε μια εβδομάδα. Στην παραπάνω γραμμή crontab, το * λέει στην εργασία cron να εκτελεί την καθορισμένη εντολή/δέσμη ενεργειών κάθε μέρα σε μια εβδομάδα.

Παραδείγματα Cron Jobs

Ακολουθούν μερικά παραδείγματα εργασιών cron:

Εκτελέστε μια δουλειά cron κάθε 15 λεπτά

Για να προγραμματίσετε την εκτέλεση μιας εργασίας cron κάθε 15 λεπτά, προσθέστε την παρακάτω γραμμή στο αρχείο crontab:

* /δεκαπέντε * * * *εντολή/γραφή

Εκτελέστε μια δουλειά cron στις 5 το πρωί κάθε μέρα

Για να προγραμματίσετε μια εργασία cron να εκτελείται στις 5 το πρωί κάθε μέρα, προσθέστε την παρακάτω γραμμή στο αρχείο crontab:

0 5 * * *εντολή/γραφή

Εκτελέστε μια δουλειά cron στις 5 το απόγευμα κάθε μέρα

Για να προγραμματίσετε μια εργασία cron να εκτελείται στις 5 το απόγευμα κάθε μέρα, προσθέστε την παρακάτω γραμμή στο αρχείο crontab:

0 17 * * *εντολή/γραφή

Εκτελέστε μια δουλειά cron στις 9 το πρωί την πρώτη ημέρα κάθε μήνα

Για να προγραμματίσετε μια εργασία cron να εκτελείται στις 9 το πρωί την πρώτη ημέρα κάθε μήνα, προσθέστε την παρακάτω γραμμή στο αρχείο crontab:

0 9 1 * *εντολή/γραφή

Εκτελέστε μια δουλειά cron κάθε ώρα κάθε 15 Μαρτίου

Για να προγραμματίσετε μια εργασία cron κάθε ώρα κάθε 15 Μαρτίου, προσθέστε την παρακάτω γραμμή στο αρχείο crontab:

0 * δεκαπέντε 3 *εντολή/γραφή

Εκτελέστε μια δουλειά cron κάθε 5 ώρες

Για να προγραμματίσετε μια εργασία cron κάθε 5 ώρες, προσθέστε την παρακάτω γραμμή στο αρχείο crontab:

0 * /5 * * *εντολή/γραφή

Εκτελέστε μια δουλειά cron κάθε 15 λεπτά

Για να προγραμματίσετε την εκτέλεση μιας εργασίας cron κάθε 15 λεπτά, προσθέστε την παρακάτω γραμμή στο αρχείο crontab:

* /δεκαπέντε * * * *

Χρήση συμβολοσειρών

Οι ακόλουθες συμβολοσειρές μπορούν επίσης να χρησιμοποιηθούν για τον ορισμό μιας εργασίας:

  1. @ωριαίος: Για να εκτελέσετε μια εργασία μία φορά κάθε ώρα, δηλ. 0 * * * *
  2. @μεσάνυχτα: Για την εκτέλεση μιας εργασίας μία φορά κάθε μέρα, δηλ. 0 0 * * *
  3. @καθημερινά: το ίδιο με τα μεσάνυχτα
  4. @εβδομαδιαίος: Για να εκτελείτε μια εργασία μία φορά την εβδομάδα, δηλ. 0 0 * * 0
  5. @Μηνιαίο: Για την εκτέλεση μιας εργασίας μία φορά το μήνα, δηλ. 0 0 1 * *
  6. @ετησίως: Για να εκτελείτε μια δουλειά κάθε χρόνο, δηλ. 0 0 1 1 *
  7. @ετήσια: ίδιο με το @ετήσια
  8. @reboot: Για να εκτελέσετε μια εργασία μία φορά σε κάθε εκκίνηση

Για παράδειγμα, για την εκτέλεση ενός σεναρίου ή εντολής κάθε εβδομάδα, η καταχώριση στο αρχείο crontab θα είναι:

@εβδομαδιαία εντολή/γραφή

Προκαθορισμένοι κατάλογοι Cron

Υπάρχουν ορισμένοι προκαθορισμένοι κατάλογοι cron στο Linux όπου εκτελούνται αυτόματα τα αποθηκευμένα σενάρια. Εάν τοποθετήσουμε οποιοδήποτε σενάριο κάτω από αυτούς τους καταλόγους, θα εκτελεστεί αυτόματα κατά τη διαμόρφωση του χρόνου.

  • /etc/cron.daily
  • /etc/cron.hourly
  • /etc/cron.monthly
  • /etc/cron.weekly

Για παράδειγμα, για να εκτελείτε ένα σενάριο μία φορά κάθε μήνα, θα πρέπει να το τοποθετείτε στο /etc/cron.monthly.

Προβολή Cron Jobs

Προβολή εργασιών για τον τρέχοντα χρήστη

Χρησιμοποιήστε την ακόλουθη εντολή για να δείτε όλες τις προγραμματισμένες εργασίες cron για τον τρέχοντα χρήστη:

$crontab-ο

Προβολή εργασιών για τους χρήστες root

Για να δείτε όλες τις προγραμματισμένες εργασίες του χρήστη root, εκδώστε την ακόλουθη εντολή στο τερματικό:

$Γάτα /και τα λοιπά/crontab

Θα πρέπει να συνδεθείτε ως χρήστης root ή να εκτελέσετε την εντολή ως sudo.

Προβολή εργασιών για τους άλλους χρήστες

Για να δείτε όλες τις προγραμματισμένες εργασίες ενός συγκεκριμένου χρήστη, εκδώστε την ακόλουθη εντολή στο τερματικό αντικαθιστώντας το με το πραγματικό όνομα χρήστη:

$sudocrontab-u <όνομα χρήστη>> -ο

Για να εκτελέσετε αυτήν την εντολή, θα χρειαστείτε δικαιώματα sudo.

Προβολή ωριαίων εργασιών cron

Για να δείτε όλες τις εργασίες cron που έχουν ρυθμιστεί να εκτελούνται ανά ώρα, εκδώστε την ακόλουθη εντολή στο τερματικό:

$ls -ο /και τα λοιπά/cron.hourly

Δείτε καθημερινές εργασίες cron

Για να δείτε όλες τις εργασίες cron που έχουν ρυθμιστεί να εκτελούνται καθημερινά, εκδώστε την ακόλουθη εντολή στο τερματικό:

$ls -ο /και τα λοιπά/cron.καθημερινά/

Δείτε εβδομαδιαίες εργασίες cron

Για να δείτε όλες τις εργασίες cron που έχουν διαμορφωθεί για να εκτελούνται εβδομαδιαίως, εκδώστε την ακόλουθη εντολή στο τερματικό:

$ls -ο /και τα λοιπά/cron.βδομάδα/

Προβολή μηνιαίων εργασιών cron

Για να δείτε όλες τις εργασίες cron που έχουν ρυθμιστεί να εκτελούνται κάθε μήνα, εκδώστε την ακόλουθη εντολή στο τερματικό:

$ls -ο /και τα λοιπά/cron.μηνιαία/

Δημιουργία αντιγράφων ασφαλείας όλων των εργασιών Cron

Συνιστάται να διατηρείτε αντίγραφο ασφαλείας όλων των εργασιών cron σε ένα αρχείο, ώστε να μπορείτε να ανακτήσετε σε περίπτωση διαγραφής. Για να δημιουργήσετε αντίγραφα ασφαλείας για όλες τις τρέχουσες εργασίες, χρησιμοποιήστε τον τελεστή ανακατεύθυνσης για να ανακατευθύνετε την έξοδο του crontab -l σε ένα αρχείο.

$crontab-ο >>backup_cron.txt

Κατάργηση όλων των προγραμματισμένων εργασιών Cron

Για να καταργήσετε όλες τις προγραμματισμένες εργασίες cron, χρησιμοποιήστε τη σημαία -r ως εξής:

$crontab-r

Cron Permission

Μπορούμε να περιορίσουμε την πρόσβαση στην εντολή crontab μέσω δύο αρχείων: / etc/cron.allow και/etc/cron.deny.

  • /etc/cron.allow - Προσθέστε χρήστες (ένας ανά γραμμή) στους οποίους θέλετε να επιτρέψετε την πρόσβαση στις εντολές crontab. Αυτοί οι χρήστες μπορούν να εκτελέσουν εργασίες προγραμματισμού.
  • /etc/cron.deny - Προσθέστε χρήστες (ένας ανά γραμμή) στους οποίους θέλετε να αρνηθείτε την πρόσβαση στις εντολές crontab. Αυτοί οι χρήστες δεν μπορούν να εκτελέσουν προγραμματισμένες εργασίες.

Crontab Syntax Generators

Υπάρχουν ορισμένοι ιστότοποι που επιτρέπουν τη δημιουργία σύνταξης για crontabs. Αυτοί οι ιστότοποι διευκολύνουν τη δημιουργία έκφρασης crontab χωρίς να χρειάζεται να θυμόμαστε τη σύνταξη. Αν και υπάρχουν διάφορες ιστοσελίδες διαθέσιμες για γεννήτριες σύνταξης όπως π.χ. crontabgenerator.com , crontab-generator.org , και cronmaker.com Το Αυτό που προτιμώ περισσότερο και μου φάνηκε χρήσιμο είναι το crontab.guru Το Με βάση την είσοδο του χρήστη, δημιουργεί μια έκφραση crontab την οποία μπορείτε να αντιγράψετε-επικολλήσετε στο αρχείο crontab.

συμπέρασμα

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