Πώς να επεξεργαστείτε το αρχείο Crontab του Linux για να προγραμματίσετε εργασίες

Εισαγωγή

Υπάρχει ένας δαίμονας στο Linux που ονομάζεται cron ο οποίος χρησιμοποιείται για την εκτέλεση διαδικασιών σε τακτά χρονικά διαστήματα.

Ο τρόπος με τον οποίο γίνεται αυτό είναι να ελέγξετε ορισμένους φακέλους στο σύστημά σας για εκτέλεση σεναρίων. Για παράδειγμα, υπάρχει ένας φάκελος που ονομάζεται /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly και /etc/cron.monthly. Υπάρχει επίσης ένα αρχείο που ονομάζεται / etc / crontab.

Από προεπιλογή, μπορείτε απλά να τοποθετήσετε σενάρια στους σχετικούς φακέλους για να τους κάνετε να τρέχουν σε τακτά χρονικά διαστήματα.

Για παράδειγμα, ανοίξτε ένα παράθυρο τερματικού (πατώντας CTRL, ALT και T) και εκτελέστε την ακόλουθη εντολή ls :

ls / etc / cron *

Θα δείτε τη λίστα προγραμμάτων ή σεναρίων που εκτελούνται ανά ώρα, καθημερινά, εβδομαδιαία και μηνιαία.

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

Εκεί έρχεται το αρχείο crontab.

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

Δικαιώματα

Η εντολή crontab απαιτεί ότι ο χρήστης έχει δικαιώματα για να επεξεργαστεί ένα αρχείο crontab. Υπάρχουν βασικά δύο αρχεία που χρησιμοποιούνται για τη διαχείριση των δικαιωμάτων crontab:

Εάν υπάρχει το αρχείο /etc/cron.allow τότε ο χρήστης που επιθυμεί να επεξεργαστεί το αρχείο crontab πρέπει να είναι στο συγκεκριμένο αρχείο. Εάν το αρχείο cron.allow δεν υπάρχει, αλλά υπάρχει ένα αρχείο /etc/cron.deny τότε ο χρήστης δεν πρέπει να υπάρχει σε αυτό το αρχείο.

Εάν υπάρχουν και τα δύο αρχεία τότε το /etc/cron.allow αντικαθιστά το αρχείο /etc/cron.deny.

Εάν δεν υπάρχει κανένα αρχείο τότε εξαρτάται από τη διαμόρφωση του συστήματος αν ο χρήστης μπορεί να επεξεργαστεί το crontab.

Ο χρήστης root μπορεί πάντα να επεξεργαστεί το αρχείο crontab. Μπορείτε είτε να χρησιμοποιήσετε την εντολή su για να μεταβείτε στον χρήστη root είτε στην εντολή sudo για να εκτελέσετε την εντολή crontab.

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

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

Για να ελέγξετε αν έχετε ένα αρχείο crontab, εκτελέστε την ακόλουθη εντολή:

crontab -l

Εάν δεν έχετε ένα αρχείο crontab, το μήνυμα "no crontab for " θα εμφανιστεί διαφορετικά θα εμφανιστεί το αρχείο crontab (αυτή η λειτουργικότητα διαφέρει από σύστημα σε σύστημα, μερικές φορές δεν εμφανίζει τίποτα και άλλες φορές εμφανίζει) μην επεξεργαστείτε αυτό το αρχείο ").

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

crontab -e

Από προεπιλογή, εάν δεν έχει επιλεγεί προεπιλεγμένος επεξεργαστής, θα σας ζητηθεί να επιλέξετε ένα προεπιλεγμένο πρόγραμμα επεξεργασίας που θα χρησιμοποιηθεί. Προσωπικά, μου αρέσει να χρησιμοποιώ το νανο καθώς είναι αρκετά απλό προς χρήση και τρέχει από το τερματικό σταθμό.

Το αρχείο που ανοίγει έχει πολλές πληροφορίες, αλλά το βασικό μέρος είναι το παράδειγμα λίγο πριν το τέλος του τμήματος σχολίων (τα σχόλια σημειώνονται με γραμμές που αρχίζουν με #).

# εντολή mh dom mon dow

0 5 * * 1 tar -zcf /var/backups/home.tgz / home /

Υπάρχουν 6 στοιχεία πληροφοριών για να χωρέσουν σε κάθε γραμμή του αρχείου crontab:

Για κάθε στοιχείο (εκτός από την εντολή) μπορείτε να καθορίσετε έναν χαρακτήρα μπαλαντέρ. Κοιτάξτε το παρακάτω παράδειγμα γραμμής crontab:

30 18 * * * tar -zcf /var/backups/home.tgz / home /

Αυτό που λέει η παραπάνω εντολή είναι στα 30 λεπτά, 18 ώρες και κάθε μέρα, μήνα και ημέρα της εβδομάδας να τρέχει μια εντολή για το zip και tar τον αρχικό κατάλογο στο φάκελο / var / backups.

Για να εκτελέσω μια εντολή που τρέχει στα 30 λεπτά κάθε ώρα, μπορώ να εκτελέσω την ακόλουθη εντολή:

30 * * * * εντολή

Για να πάρω μια εντολή για να τρέξει κάθε λεπτό μετά τις 18:00 μπορώ να εκτελέσω την ακόλουθη εντολή:

* 18 * * * εντολή

Επομένως, πρέπει να είστε προσεκτικοί σχετικά με τη ρύθμιση των εντολών crontab.

Για παράδειγμα:

* * * 1 * εντολή

Η παραπάνω εντολή θα τρέχει κάθε λεπτό κάθε ώρας κάθε ημέρας κάθε εβδομάδας τον Ιανουάριο. Αμφιβάλλω ότι αυτό είναι που θέλετε.

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

0 5 1 1 * εντολή

Πώς να αφαιρέσετε ένα αρχείο Crontab

Τις περισσότερες φορές δεν θέλετε να αφαιρέσετε το αρχείο crontab, αλλά ίσως θελήσετε να καταργήσετε ορισμένες σειρές από το αρχείο crontab.

Ωστόσο, εάν θέλετε να καταργήσετε το αρχείο crontab του χρήστη, εκτελέστε την ακόλουθη εντολή:

crontab -r

Ένας ασφαλέστερος τρόπος για να γίνει αυτό είναι να εκτελέσετε την ακόλουθη εντολή:

crontab -i

Αυτό θέτει την ερώτηση "είστε σίγουροι;" πριν αφαιρέσετε το αρχείο crontab.