Οι υπηρεσίες στο Linux ξεκινούν αμέσως μόλις το σύστημά σας εκκινήσει ή επανεκκινήσει. Δείτε πώς μπορείτε να δημιουργήσετε μια υπηρεσία systemd αυτόματης εκκίνησης στον υπολογιστή σας Linux.
Το systemd είναι ο διαχειριστής υπηρεσιών για πολλές γνωστές διανομές Linux. Μια υπηρεσία είναι μια μονάδα ενός προγράμματος που εκτελείται συνήθως στο παρασκήνιο. Οι υπηρεσίες, από τη φύση τους, ξεκινούν αυτόματα μόλις το σύστημα εκκινήσει και μπορεί να λειτουργήσει χωρίς επίβλεψη.
Εάν χρειάζεται να δημιουργήσετε μια εργασία ή πρόγραμμα αυτόματης εκκίνησης που εκτελείται κάθε φορά που εκκινείτε ή επανεκκινείτε το σύστημά σας, μπορείτε να σκεφτείτε τη δημιουργία μιας νέας υπηρεσίας. Ας μάθουμε πώς να δημιουργήσουμε μια νέα, προσαρμοσμένη υπηρεσία systemd στο Linux.
Βήμα 1: Δημιουργία του αρχείου υπηρεσίας
Απαιτούνται μερικά βήματα για τη δημιουργία ενός νέου αρχείου υπηρεσίας systemd. Το πρώτο από αυτά είναι η δημιουργία του αρχείου μονάδας για την υπηρεσία. Πριν δημιουργήσετε ένα αρχείο υπηρεσίας, πρέπει να κατανοήσετε τη δομή του.
Ας μελετήσουμε το αρχείο υπηρεσίας τραβώντας ένα πραγματικό, λειτουργικό αρχείο υπηρεσίας από το σύστημά σας Linux. Παρακάτω, μπορείτε να δείτε το αρχείο υπηρεσίας για την υπηρεσία vmtools daemon.
Αυτή η συγκεκριμένη υπηρεσία ενδέχεται να μην υπάρχει στο σύστημά σας, εκτός εάν εκτελείτε επίσης Linux σε VMware με εγκατεστημένα εργαλεία VMware. Η εν λόγω υπηρεσία δεν είναι σημαντική επειδή όλες οι υπηρεσίες, ή μάλλον, τα αρχεία μονάδας υπηρεσιών, έχουν την ίδια βασική δομή με ορισμένες προσαρμογές όπως απαιτείται.
Όλα τα αρχεία υπηρεσίας systemd πρέπει να έχουν τρεις ενότητες: [Υπηρεσία], [Μονάδα], και [Εγκαθιστώ]και μερικές παραμέτρους κάτω από κάθε ενότητα. Δείτε τι περιέχει κάθε ενότητα και γιατί είναι σημαντικές:
1. Μονάδα
ο Μονάδα Η ενότητα περιλαμβάνει σημαντικά μεταδεδομένα, όπως περιγραφή και εξαρτήσεις της υπηρεσίας. Έχει τρεις παραμέτρους: Περιγραφή, Πριν, και Μετά. Όπως προτείνει το ίδιο, το Περιγραφή Η παράμετρος παρέχει κάποιο πλαίσιο της υπηρεσίας και τι κάνει.
ο Πριν και Μετά Οι παράμετροι ορίζουν τις προϋποθέσεις που πρέπει να πληρούνται για την εκτέλεση της υπηρεσίας. Για παράδειγμα, εάν ξεκινάτε μια υπηρεσία διακομιστή web, θα θέλατε να ξεκινά μόνο αφού η υπηρεσία δικτύου είναι συνδεδεμένη. Έτσι θα ορίσετε την τιμή του Μετά παράμετρο στην υπηρεσία δικτύου.
2. Υπηρεσία
ο Υπηρεσία η ενότητα περιέχει δύο υποχρεωτικές παραμέτρους: ExecStart, Τύπος, και μερικές άλλες προαιρετικές παραμέτρους όπως ExecReload, κι αλλα.
ExecStart ορίζει την εντολή που θα εκτελεστεί όταν ξεκινά η υπηρεσία ενώ το Τύπος Η παράμετρος καθορίζει τον τύπο της διαδικασίας που θα αναπαραχθεί.
3. Εγκαθιστώ
Αυτή η ενότητα και τα δεδομένα της καλούνται κάθε φορά που ενεργοποιείτε ή απενεργοποιείτε την υπηρεσία με την εντολή systemctl.
Έχει μερικές παραμέτρους. Ένα από τα κοινά και απαραίτητα είναι WantedBy. ο WantedBy Η παράμετρος καθορίζει τις μονάδες προορισμού που πρέπει να ξεκινούν κάθε φορά που η υπηρεσία είναι ενεργοποιημένη. Η προεπιλεγμένη τιμή είναι πολλαπλών χρηστών.στόχος.
Οι παράμετροι που αναφέρονται εδώ δεν είναι οι μόνες παράμετροι που μπορείτε να ορίσετε σε ένα αρχείο μονάδας. Μπορείτε να λάβετε την πλήρη λίστα παραμέτρων από το επίσημη τεκμηρίωση systemd.exec ή πληκτρολογώντας man systemd.exec σε τερματικό.
Ένα αρχείο μονάδας υπηρεσιών systemd τελειώνει πάντα με ένα ".υπηρεσία" επέκταση και πρέπει να αποθηκευτεί στο /etc/systemd/system/ Ευρετήριο. Δημιουργήστε το αρχείο υπηρεσίας χρησιμοποιώντας την εντολή αφής με αυξημένα προνόμια τοποθετώντας το με το sudo εντολή:
sudo touch /etc/systemd/system/.υπηρεσία
Τώρα που δημιουργήσατε το αρχείο υπηρεσίας, ας προχωρήσουμε στη συμπλήρωσή του με την απαραίτητη σύνταξη για να γίνει η υπηρεσία έγκυρη και να λειτουργεί.
Βήμα 2: Διαμόρφωση του αρχείου υπηρεσίας
Για επίδειξη, θα δημιουργήσετε ένα δείγμα υπηρεσίας που εκτελείται Nmap για να σαρώσετε τις θύρες στο μηχάνημά σας και αποθηκεύστε την έξοδο σε ένα αρχείο κάθε τριάντα δευτερόλεπτα. Για να επιτύχετε αυτήν την εργασία, ακολουθεί ο τρόπος δομής του αρχείου μονάδας υπηρεσιών:
[Μονάδα]
Description=Επίδειξη προσαρμοσμένης υπηρεσίας nmap.
After=network.target[Υπηρεσία]
Τύπος=απλός
Χρήστης = ρίζα
ExecStart=/usr/bin/nmap -sS -O -oN /home//results.txt localhost
Επανεκκίνηση=πάντα
RestartSec=30
[Εγκαθιστώ]
WantedBy=multi-user.target
Παρόλο που οι παράμετροι που αναφέρονται εδώ έχουν εξηγηθεί προηγουμένως, ας δούμε πώς επηρεάζουν την υπηρεσία που δημιουργήθηκε πρόσφατα και ας εξερευνήσουμε επίσης νέες παραμέτρους που εισάγονται σε αυτήν την ενότητα: Επανεκκίνηση, RestartSec, και Χρήστης.
Δείτε τι σημαίνουν οι παράμετροι σε κάθε ενότητα:
- Περιγραφή: Κείμενο αναγνώσιμο από τον άνθρωπο για την περιγραφή των λειτουργιών της υπηρεσίας.
- After=network.target: Υπαγόρευση στη systemd από την οποία εξαρτάται αυτή η υπηρεσία δίκτυο.στόχος και θα πρέπει να ξεκινήσει μόνο μετά την δίκτυο.στόχος η υπηρεσία έχει ξεκινήσει. Σημειώστε ότι Μετά δεν χρησιμοποιείται για τη δημιουργία άμεσης σχέσης εξάρτησης, απλώς λειτουργεί ως έναυσμα.
- Τύπος=απλό: Υπάρχουν πολλοί τύποι υπηρεσιών. Ωστόσο, η υπηρεσία σε αυτήν την επίδειξη είναι μια τακτική διαδικασία και ως εκ τούτου το δηλώνουμε. Μπορείτε να βρείτε όλες τις διαφορετικές τιμές για αυτό στην επίσημη σελίδα τεκμηρίωσης που συνδέθηκε προηγουμένως.
- Επανεκκίνηση=πάντα: Αυτό σημαίνει ότι κάθε φορά που η υπηρεσία τερματίζεται, θα πρέπει πάντα να γίνεται επανεκκίνηση.
- RestartSec=30: Αυτό ορίζει το διάστημα μεταξύ κάθε έναρξης της υπηρεσίας σε 30 δευτερόλεπτα.
- User=root: Αυτό ορίζει ότι η υπηρεσία θα εκτελείται ως χρήστης root. Σε αυτήν την περίπτωση, αυτό είναι ένα βήμα που πρέπει να κάνετε, καθώς το Nmap δεν θα μπορεί να εκτελεστεί χωρίς δικαιώματα root.
- ExecStart: Αυτή η οδηγία περιέχει την απόλυτη διαδρομή προς το πρόγραμμα που θα εκτελεστεί μαζί με όλες τις απαιτούμενες σημαίες ή ορίσματα που είναι απαραίτητα για τη σωστή λειτουργία του προγράμματος.
- WantedBy=multi-user.target: Αυτή η παράμετρος σε ένα αρχείο υπηρεσίας καθορίζει ποιος στόχος πρέπει να περιλαμβάνει ή να "θέλει" την υπηρεσία. Όταν μια υπηρεσία περιλαμβάνεται σε έναν στόχο, σημαίνει ότι η υπηρεσία πρέπει να ξεκινήσει όταν το σύστημα φτάσει σε αυτόν τον στόχο κατά τη διαδικασία εκκίνησης. Σε αυτήν την περίπτωση, η υπηρεσία θα πρέπει να ξεκινήσει όταν το σύστημα εισέλθει στη λειτουργία πολλών χρηστών. Η λειτουργία πολλών χρηστών είναι μια κατάσταση όπου το σύστημα εκκινείται πλήρως και επιτρέπει σε πολλούς χρήστες να συνδεθούν και να χρησιμοποιήσουν το σύστημα.
Βήμα 3: Ενεργοποίηση και εκκίνηση της Υπηρεσίας
Τώρα που δημιουργήσατε το αρχείο μονάδας, τα μόνα βήματα που απομένουν για την ενεργοποίηση της υπηρεσίας σας είναι η ενεργοποίηση και η εκτέλεση του. Μπορείτε να ενεργοποιήσετε και να ξεκινήσετε την υπηρεσία σας χρησιμοποιώντας την εντολή systemctl.
Δείτε πώς μπορείτε να χρησιμοποιήσετε το systemctl για να ενεργοποιήσετε, να ξεκινήσετε και να ελέγξετε την κατάσταση της υπηρεσίας σας:
sudo systemctl ενεργοποίηση .υπηρεσία
sudo systemctl start .υπηρεσία
κατάσταση sudo systemctl .υπηρεσία
Τώρα, η προσαρμοσμένη υπηρεσία σας θα πρέπει να είναι σε λειτουργία! Σε αυτήν την περίπτωση, θα πρέπει να δείτε μια σάρωση Nmap να εκτελείται κάθε τριάντα δευτερόλεπτα και η έξοδος να αποθηκεύεται στο results.txt αρχείο στον αρχικό κατάλογο.
Η εγκατάσταση μιας υπηρεσίας systemd στο Linux είναι εύκολη!
Αν και η δημιουργία μιας προσαρμοσμένης υπηρεσίας από την αρχή μπορεί να φαίνεται τρομακτική στην αρχή, είναι ένας πολύ εύκολος τρόπος δημιουργήστε μια αυτοεκτελούμενη, χωρίς επίβλεψη διαδικασία για να εκτελέσετε επαναλαμβανόμενες εργασίες για εσάς και να ενισχύσετε παραγωγικότητα.
Στην υπηρεσία επίδειξης, δεν ξέραμε σχεδόν το πώς μπορείτε να διαμορφώσετε και να ρυθμίσετε μια υπηρεσία. Για να μάθετε τα πάντα σχετικά με το πώς μπορείτε να προσαρμόσετε την υπηρεσία σας, συνιστάται να διαβάσετε την επίσημη τεκμηρίωση που συνδέεται στη σημείωση.
Εάν η εγκατάσταση και η διατήρηση μιας υπηρεσίας σας φαίνεται υπερβολικά δύσκολη, εξετάστε το ενδεχόμενο να ελέγξετε έναν εναλλακτικό τρόπο αυτοματοποίησης επαναλαμβανόμενων εργασιών στο Linux.