Το Raspberry Pi είναι ένα ισχυρό SBC (μονής πλακέτας υπολογιστή) που μπορείτε να χρησιμοποιήσετε για διάφορες εφαρμογές και έργα. Η ευελιξία του έγκειται στην ικανότητά του να εκτελεί όλα τα είδη προγραμμάτων, συμπεριλαμβανομένων των προσαρμοσμένων σεναρίων, χάρη εν μέρει στο Raspberry Pi OS και σε άλλα λειτουργικά συστήματα που βασίζονται σε Linux.

Η εκτέλεση ενός σεναρίου ή προγράμματος στο Raspberry Pi είναι τόσο απλή όσο η εύρεση του στο σύστημα και η εκτέλεση του. Τι γίνεται όμως αν θέλετε να αυτοματοποιήσετε αυτήν τη διαδικασία, ίσως επειδή το έργο σας το απαιτεί ή επειδή θέλετε να βελτιώσετε τη ροή εργασίας σας;

Μια απάντηση σε αυτό είναι να μάθετε πώς να χρησιμοποιείτε το systemd.

Τι είναι το Systemd;

Το systemd είναι μια ομάδα στοιχείων του συστήματος για διαμόρφωση υπηρεσίας και συμπεριφορά σε σύγχρονα συστήματα Linux. Ταυτίζεται με ένα PID (αναγνωριστικό διαδικασίας) από 1 αφού είναι η πρώτη διαδικασία εκκίνησης κατά την εκκίνηση του συστήματος. Σε γενικές γραμμές, ο σκοπός του systemd είναι να σας βοηθήσει με τη διαχείριση και την εκτέλεση προγραμμάτων κατά την εκκίνηση του συστήματος. Και αυτό θα αξιοποιήσετε για να ξεκινήσετε το πρόγραμμά σας κατά την εκκίνηση στο Pi.

instagram viewer

Όπως αναφέρθηκε αρχικά, υπάρχουν αρκετές μέθοδοι για την εκτέλεση προγραμμάτων κατά την εκκίνηση σε συστήματα Linux, όπως rc.local, cron και autostart. Ωστόσο, το systemd συμβαίνει σε μια καλύτερη λύση της παρτίδας εάν θέλετε να ξεκινήσετε προγράμματα GUI (γραφική διεπαφή χρήστη), αυτοματοποίηση εφαρμογών για εκτέλεση μετά την έναρξη ορισμένων διαδικασιών συστήματος ή εκτέλεση προγραμμάτων ξανά και ξανά μέχρι τον προγραμματισμό σας έργα.

Σχετιζομαι με: Πώς να προγραμματίσετε εργασίες σε Linux με Cron και Crontab

Πώς να χρησιμοποιήσετε το systemd για να ξεκινήσετε προγράμματα κατά την εκκίνηση

Το systemd είναι μια ελαφρώς πιο περίπλοκη μέθοδος εκκίνησης προγραμμάτων κατά την εκκίνηση σε συστήματα Linux. Ωστόσο, η ευελιξία προγραμματισμού που προσφέρει σε σχέση με άλλες μεθόδους - αυτές που αναφέραμε παραπάνω - υπερτερεί εντελώς της πολυπλοκότητάς της από κάθε άποψη.

Η μέθοδος systemd χρησιμοποιεί αρχεία μονάδων, τα οποία είναι παρόμοια με αρχεία .ini που περιέχουν πληροφορίες κωδικοποίησης σχετικά με συσκευές, υπηρεσίες, υποδοχές, στόχο εκκίνησης και άλλα βασικά στοιχεία του συστήματος.

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

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

Δημιουργία υπηρεσίας

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

  1. Στο παράθυρο CLI, πληκτρολογήστε sudo nano /lib/systemd/system/display.service. Μπορείτε να χρησιμοποιήσετε οποιοδήποτε όνομα για την υπηρεσία σας, αρκεί να τελειώνει με την επέκταση υπηρεσίας.
  2. Στο αρχείο υπηρεσίας, επικολλήστε τις ακόλουθες γραμμές κώδικα:
    [Μονάδα]
    Περιγραφή = PiCounter
    After = network.target
    [Υπηρεσία]
    ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
    Επανεκκίνηση = πάντα
    Χρήστης = pi
    [Εγκαθιστώ]
    WantedBy = multi-user.target

Όλες οι κοινές επιλογές διαμόρφωσης εμπίπτουν στο Μονάδα και Εγκαθιστώ ενότητες, ενώ οι επιλογές διαμόρφωσης για συγκεκριμένες υπηρεσίες βρίσκονται στην ενότητα Υπηρεσία.

Μερικά από τα παραπάνω ζεύγη αξίας οδηγίας που ίσως χρειαστεί να τροποποιήσετε περιλαμβάνουν:

Εγώ. Μετά: Καθορίζει πότε θα ξεκινήσει η υπηρεσία. Ρύθμιση σε network.target διασφαλίζει ότι η αναφερόμενη τιμή - network.target σε αυτήν την περίπτωση - ξεκινά πριν από την έναρξη της τρέχουσας μονάδας. Ωστόσο, δεν κατευθύνει μια σχέση εξάρτησης για να ενεργοποιηθεί η υπηρεσία. αυτό γίνεται μέσω άλλων οδηγιών, όπως Wants, Requires και WantedBy.

Φυσικά, μπορείτε να αλλάξετε αυτήν την τιμή ώστε να ταιριάζει στις απαιτήσεις του έργου σας. Για παράδειγμα, εάν θέλετε να εκτελεστεί το πρόγραμμά σας μετά τη σύνδεση του Raspberry Pi σε δίκτυο, μπορείτε να χρησιμοποιήσετε το network-online.target αξία. Μπορείτε να ανατρέξετε στο Τεκμηρίωση του Fedora για το systemd για να μάθετε περισσότερα σχετικά με αυτές τις τιμές.

ii. ExecStart: Διατηρεί την απόλυτη διαδρομή και το όνομα προγράμματος / σεναρίου που θέλετε να εκτελέσετε κατά την εκκίνηση. Επομένως, ανάλογα με το τι θέλετε να εκτελέσετε, πρέπει να προσθέσετε τιμές και για τις δύο αυτές οδηγίες.

iii. Χρήστης: Προσδιορίζει το όνομα του Raspberry Pi σας. Εάν έχετε αλλάξει το όνομα του Pi σας, πρέπει να βάλετε αυτήν την τιμή για τον χρήστη.

iv. Ζητείται από: Είναι ο πιο συνηθισμένος τρόπος καθορισμού της σκανδάλης για μια μονάδα. Με τη ρύθμιση σε multi-user.target, μπορείτε να δημιουργήσετε μια σχέση εξάρτησης που θα εκτελεί το πρόγραμμα όταν ο έλεγχος του συστήματος παραδίδεται στο κέλυφος πολλών χρηστών.

Επιπλέον, αυτό εκτελεί επίσης το πρόγραμμά σας πριν ξεκινήσει το σύστημα X-Windows του Pi, πράγμα που σημαίνει ότι το πρόγραμμά σας εκτελείται ακόμη και πριν συνδεθείτε στο σύστημα. Σε περίπτωση που θέλετε να εκτελείται ένα σενάριο πριν συνδεθείτε στο Raspberry Pi, αυτό σας επιτρέπει να το κάνετε.

Οι παραπάνω γραμμές κώδικα λειτουργούν για προγράμματα εκτός GUI. Ωστόσο, εάν θέλετε να εκτελέσετε ένα πρόγραμμα GUI χρησιμοποιώντας το systemd, θα πρέπει να προσθέσετε τον ακόλουθο κώδικα στο αρχείο υπηρεσίας σας:

[Μονάδα]
Περιγραφή = PiCounter
After = network.target
[Υπηρεσία]
Περιβάλλον = Οθόνη =: 0
Περιβάλλον = XAUTHORITY / σπίτι / pi /. Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Επανεκκίνηση = πάντα
[Εγκαθιστώ]
WantedBy = multi-user.target

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

Δοκιμάστε την υπηρεσία

Με την υπηρεσία έτοιμη, επαληθεύστε με μη αυτόματο τρόπο εάν λειτουργεί. Για αυτό, πληκτρολογήστε την ακόλουθη εντολή στο τερματικό: sudo systemctl έναρξη display.service. Η υπηρεσία πρέπει να εκτελέσει τις οδηγίες σας με επιτυχία.

Μόλις το κάνει, τερματίστε το με sudo systemctl stop display.service.

Ενεργοποιήστε την υπηρεσία

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

Για να το κάνετε αυτό, πληκτρολογήστε sudo systemctl ενεργοποιήστε το display.service στο παράθυρο του τερματικού. Και μόλις ολοκληρωθεί, εισάγετε επανεκκίνηση sudo για να επανεκκινήσετε το Pi σας.

Μόλις το Raspberry Pi εκκινήσει, το systemd θα πρέπει να εκτελέσει το πρόγραμμά σας σύμφωνα με τις παρεχόμενες οδηγίες.

Αυτοματοποίηση εκκίνησης προγράμματος κατά την εκκίνηση στο Raspberry Pi

Όπως τα περισσότερα συστήματα Linux, το Raspberry Pi OS σας επιτρέπει επίσης να ολοκληρώσετε τις λειτουργίες με διάφορους τρόπους και παραμένει αλήθεια για τον προγραμματισμό των εκκινήσεων προγραμμάτων. Έτσι, εάν θέλετε να ξεκινήσετε προγράμματα / σενάρια GUI κατά την εκκίνηση και θέλετε καλύτερο έλεγχο του προγραμματισμού σας, το systemd είναι σαφώς μια καλύτερη μέθοδος.

Ωστόσο, αν θέλετε μια απλούστερη λύση ή οι απαιτήσεις του έργου σας απαιτούν συγκεκριμένο προγραμματισμό, μπορείτε να δείτε τον οδηγό μας για Εκτέλεση προγράμματος Raspberry Pi ή Script κατά την εκκίνηση να μάθω περισσότερα.

ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Το Ultimate Raspberry Pi διατάζει Cheat Sheet

Θέλετε να πάρετε περισσότερα από το Raspberry Pi; Ακολουθούν πολλές χρήσιμες εντολές για να πλοηγηθείτε στο τερματικό του Pi και να προγραμματίσετε τις καρφίτσες GPIO.

Διαβάστε Επόμενο

Σχετικά θέματα
  • DIY
  • Raspberry Pi
Σχετικά με τον Συγγραφέα
Yash Wate (Δημοσιεύθηκαν 8 άρθρα)

Ο Yash είναι Staff Writer στο MUO για DIY, Linux, Προγραμματισμός και Ασφάλεια. Πριν βρει το πάθος του γραπτώς, συνήθιζε να αναπτύσσεται για τον Ιστό και το iOS. Μπορείτε επίσης να βρείτε τα γραπτά του στο TechPP, όπου καλύπτει και άλλους κλάδους. Εκτός από την τεχνολογία, του αρέσει να μιλάει για την αστρονομία, τη Φόρμουλα 1 και τα ρολόγια.

Περισσότερα από τον Yash Wate

Εγγραφείτε στο Newsletter μας

Εγγραφείτε στο ενημερωτικό δελτίο μας για τεχνικές συμβουλές, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Ένα ακόμη βήμα…!

Επιβεβαιώστε τη διεύθυνση email σας στο email που μόλις σας στείλαμε.

.