Ως χρήστης του Linux, ίσως είστε εξοικειωμένοι με το cron. Έχει εργαστεί ως ο προγραμματιστής θέσεων εργασίας που βασίζεται στο χρονοδιάγραμμα Unix εδώ και πολλά χρόνια. Τώρα πολλοί χρήστες βλέπουν ότι οι Systemd χρονομετρητές αρχίζουν να αντικαθιστούν την κυριαρχία του cron.

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

Σχετικές : 4 Χρήσιμες εναλλακτικές λύσεις Cron για Linux

Εγκατάσταση?

Εάν χρησιμοποιείτε ήδη Systemd ως σύστημα init - πολλές δημοφιλείς διανομές Linux τρέχουν από προεπιλογή, συμπεριλαμβανομένων των Arch, Debian, Fedora, Red Hat και Ubuntu - θα δείτε τα χρονοδιακόπτη που είναι ήδη σε χρήση. Δεν υπάρχει τίποτα άλλο να κάνετε εκτός από τη χρήση αυτής της δυνατότητας που έχει ήδη εγκατασταθεί.

Λίστα υπάρχοντων χρονιστών

Ο ευκολότερος τρόπος που μπορείτε να ελέγξετε ότι υπάρχει χρονομέτρης στον υπολογιστή σας είναι με την εντολή:

 systemctl λίστες-χρονοδιακόπτες 

Δεν χρειάζεται να το εκτελέσετε ως root.

 systemctl λίστες-χρονοδιακόπτες - όλα 

Η επιλογή --all εδώ εμφανίζει επίσης μη ενεργούς χρονοδιακόπτες. Δεν υπάρχουν ανενεργοί χρονομετρητές σε αυτό το σύστημα.

Θα πρέπει να βρείτε μια έξοδο παρόμοια με την ακόλουθη εικόνα:

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

Όλοι οι χρονομετρητές πρέπει να αντιστοιχιστούν με αντίστοιχη υπηρεσία. Στην επόμενη ενότητα θα δείτε πώς μπορείτε να δημιουργήσετε ένα αρχείο .timer που ενεργοποιεί ένα αρχείο .service.

Δημιουργία νέου χρονοδιακόπτη

Μπορείτε να δημιουργήσετε ένα νέο χρονόμετρο τοποθετώντας ένα προσαρμοσμένο αρχείο .timer στο "/ etc / systemd / system /." Κατά τη δημιουργία ενός νέου χρονοδιακόπτη για το δυναμικό αρχείο DuckDNS υπηρεσίας DNS μου, κατέληξα με αυτό το κείμενο:

 [Μονάδα] Περιγραφή = Ενημέρωση δυναμικών DNS [Χρονοδιακόπτης] OnCalendar = * - * - * 11:43:00 Συνεχής = true [Εγκατάσταση] WantedBy = timers.target 

1. Τμήμα [Μονάδα]

Η επιλογή "Περιγραφή = ..." στο αρχείο σας δηλώνει το όνομα / την περιγραφή του ίδιου του χρονοδιακόπτη. Σε αυτήν την περίπτωση το "duckdns.timer" μου θα ενημερώσει το DNS μου λέγοντας στο αρχείο "duckdns.service" να τρέξει μια σειρά εντολών.

Μπορείτε να αλλάξετε τη διατύπωση μετά από "Περιγραφή =" για να δηλώσετε ό, τι θέλετε.

2. Τμήμα [Χρονοδιακόπτης]

"OnCalendar = ..." εδώ δείχνει έναν τρόπο να πει ο χρονομέτρης πότε πρέπει να ενεργοποιηθεί. *-*-* σημαίνει "Έτος-Μήνας-Ημέρα, και οι αστερίσκοι σημαίνει ότι θα τρέξει κάθε μέρα κάθε μήνα από κάθε έτος από εδώ. Ο χρόνος που ακολουθεί τους αστερίσκους δείχνει την ώρα της ημέρας που θα τρέξει ο χρονοδιακόπτης.

Η επιλογή "Persistent = true" σημαίνει ότι ο χρονοδιακόπτης θα εκτελεστεί αυτόματα αν χάσει την προηγούμενη ώρα έναρξης. Αυτό θα μπορούσε να συμβεί επειδή ο υπολογιστής ήταν απενεργοποιημένος πριν συμβεί το γεγονός. Αυτό είναι προαιρετικό αλλά συνιστάται.

3. [Εγκατάσταση]

Τέλος, το "WantedBy = timers.target" δείχνει ότι το Systemd timers.target θα χρησιμοποιήσει αυτό το αρχείο .timer. Αυτή η γραμμή στο αρχείο εμφανίζει την αλυσίδα εξάρτησης από το ένα αρχείο στο άλλο. Δεν πρέπει να παραλείψετε ή να αλλάξετε αυτή τη γραμμή.

Αλλες επιλογές

Μπορείτε να βρείτε πολλά άλλα χαρακτηριστικά γνωρίσματα με τη σάρωση της σελίδας man systemd.timer με τον man systemd.timer . Μεταβείτε στην ενότητα "OPTIONS" για να ανακαλύψετε επιλογές για ακρίβεια, επιμονή και εκτέλεση μετά την εκκίνηση.

Εκτέλεση του χρονοδιακόπτη

Ενεργοποιήστε οποιονδήποτε χρονοδιακόπτη έχετε δημιουργήσει με τη σύνταξη systemctl enable systemctl start και systemctl start .

 sudo systemctl επιτρέπουν duckdns.timer sudo systemctl ξεκινήσει duckdns.timer 

Κοιτάξτε ξανά σε systemctl list-timers για να δείτε το χρονόμετρο σας σε δράση.

Μπορείτε να δείτε αν το χρονομετρητή σας έτρεξε όπως αναμενόταν ελέγχοντας το αντίστοιχο αρχείο υπηρεσίας με την systemctl status . Σε αυτή την περίπτωση μπορείτε να δείτε ότι ο χρονομετρητής μου έτρεξε στις 11:43:00 όπως θα έπρεπε.

συμπέρασμα

Παρόλο που πολλά προγράμματα άλλων κατασκευαστών, συμπεριλαμβανομένου του DuckDNS, συνοδεύονται από δέσμες ενεργειών που τους επιτρέπουν να ενημερώνονται ανάλογα με τις ανάγκες, η δημιουργία timers στο Systemd είναι μια χρήσιμη ικανότητα να γνωρίζετε. Η δημιουργία ενός χρονοδιακόπτη για το DuckDNS εδώ δεν ήταν απαραίτητη, αλλά δείχνει πώς θα λειτουργούσαν άλλοι τύποι Systemd χρονοδιακόπτες.

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

Ευχαριστώ που παρακολουθήσατε. Καλή τύχη με τη δημιουργία των δικών σας χρονομετρητών.