Πώς να εκτελέσετε σενάρια και εντολές σε αναστολή και συνέχιση σε Linux

click fraud protection

Ο καλύτερος τρόπος για να τρέξετε σενάρια και οι εντολές για αναστολή και συνέχιση σε Linux πριν από την αναστολή (ή μετά τη συνέχιση) είναι η χρήση του συστήματος init systemd. Αυτό οφείλεται στο γεγονός ότι το σύστημα init αλληλεπιδρά άμεσα με τον πυρήνα και τα συστήματα ισχύος. Η εκμάθηση της εργασίας με αυτό το εργαλείο θα επιτρέψει σε οποιονδήποτε χρήστη να αποκτήσει πολύ έλεγχο στο λειτουργικό του σύστημα Linux,

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

Δεν υποστηρίζει κάθε σύγχρονη διανομή Linux το σύστημα init. Μερικοί χρησιμοποιούν εντελώς ή κάτι άλλο εντελώς. Σε αυτό το σεμινάριο, θα επικεντρωθούμε στο systemd καθώς είναι το πιο κοινό σύστημα εκκίνησης. Εάν θέλετε να ολοκληρώσετε αυτήν την εργασία σε κάτι που δεν εκτελεί αυτό που καλύπτουμε σε αυτό το άρθρο, εξετάστε το ενδεχόμενο να ανατρέξετε στο εγχειρίδιο του λειτουργικού σας συστήματος για οδηγίες.

instagram viewer

Σημείωση: Οι χρήστες του Debian πρέπει να αντικαταστήσουν όλες τις εμφανίσεις του usr / lib / systemd / system-sleep με /lib/systemd/system-sleep/

Εκτέλεση εντολής πριν από την αναστολή

Για να εκτελέσετε ένα σενάριο πριν από την αναστολή, τοποθετήστε οποιοδήποτε αρχείο δέσμης ενεργειών bash στο  /usr/lib/systemd/system-sleep/ Ευρετήριο. Τα ίδια τα σενάρια μπορούν να κάνουν οτιδήποτε, αλλά υπάρχει μια συγκεκριμένη σύνταξη που πρέπει να τηρηθεί. Ξεκινήστε ανοίγοντας ένα παράθυρο τερματικού. Χρησιμοποιώντας sudo -s, κερδίστε ένα κέλυφος ρίζας.

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

nano /usr/lib/systemd/system-sleep/pre-suspend.sh

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

#! / bin / bash /

Το επόμενο μέρος του σεναρίου είναι το "if". Αυτό θα πει στο σύστημα ελέγχου ισχύος ότι «εάν» το σύστημα πρόκειται να πέσει για αναστολή, κάτι πρέπει να συμβεί. Επικολλήστε τον παρακάτω κώδικα:

αν ["$ {1}" == "pre"]; τότε. sh /path/to/script/to/run.sh

Αλλαγή sh /path/to/script/to/run.sh στο σενάριο σε ό, τι θέλετε να εκτελέσετε στον υπολογιστή σας Linux (ή στον διακομιστή) ακριβώς πριν το σύστημα κατεβεί για αναστολή. Λάβετε υπόψη ότι η γραμμή αμέσως μετά το "if" δεν χρειάζεται sh /path/to/script/to/run.sh. Μπορείτε επίσης να το χρησιμοποιήσετε για να εκτελέσετε διάφορες εντολές. Εφόσον το bash μπορεί να το αναγνωρίσει ως εντολή, θα εκτελεστεί.

Το τελευταίο μέρος του σεναρίου "πριν από την αναστολή" είναι να προσθέσετε το τμήμα "else if". Αυτή η πτυχή του σεναρίου δεν χρειάζεται να τροποποιηθεί, καθώς, σε αυτό το παράδειγμα, ανησυχούμε ότι θα κάνουμε κάτι πριν το σύστημα πέφτει και όχι όταν ξυπνά.

elif ["$ {1}" == "ανάρτηση"]; τότε. # τίποτα δεν πηγαίνει εδώ. fi

Όταν όλα έχουν προστεθεί στο αρχείο, πατήστε Ctrl + O για να σώσει το νανο.

Εκτέλεση εντολής μετά το βιογραφικό

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

Για να δημιουργήσετε ένα σενάριο μετά το βιογραφικό, πρώτα, προσθέστε το shebang ως πρώτη γραμμή.

#! bin / bash

Στην επόμενη γραμμή, προσθέστε το τμήμα "if" του σεναρίου.

αν ["$ {1}" == "pre"]; τότε. # τίποτα δεν πηγαίνει εδώ

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

elif ["$ {1}" == "ανάρτηση"]; τότε. sh /path/to/script/to/run.sh. fi

Για άλλη μια φορά, είναι εντάξει να γράψετε οτιδήποτε κάτω από τη γραμμή "elif". Όσο είναι μια κανονική λειτουργία εντολών, το systemd και το bash θα το τρέξει.

Εκτελώντας εντολές κατά την εκκίνηση και συνέχιση

Εάν θέλετε να εκτελέσετε δύο αντίθετες εντολές. ένα πριν από την αναστολή και ένα στο βιογραφικό, είναι δυνατόν Σημαίνει απλώς την προσαρμογή του σεναρίου και την προσθήκη γραμμών τόσο στη γραμμή "if", όσο και στη γραμμή "elseif".

Όπως συνήθως, ξεκινήστε δημοσιεύοντας το shebang στο σενάριο για τον διερμηνέα.

#! / bin / bash

Στη συνέχεια, επικολλήστε την ενότητα if του κώδικα.

αν ["$ {1}" == "pre"]; τότε. # αντικαταστήστε με εντολή

Κάτω από το if, αντικαταστήστε το "# Replet with Command" με όποια εντολή θέλετε να εκτελέσετε ακριβώς πριν το σύστημα πέσει. Στη συνέχεια, μεταβείτε στην ενότητα "elif" και κάντε το ίδιο.

elif ["$ {1}" == "ανάρτηση"]; τότε. # αντικαταστήστε με εντολή. fi

Αποθηκεύστε το αρχείο με Ctrl + O,

Ενημέρωση δικαιωμάτων και χρήση του σεναρίου

Όλες οι απαραίτητες εντολές βρίσκονται μέσα στο αρχείο σεναρίου, αλλά προτού εκτελεστεί, θα πρέπει να ενημερώσετε τα δικαιώματα. Ανοίξτε ένα τερματικό και αποκτήστε root με: su ή sudo -s. Τότε κάνε:

chmod + x /usr/lib/systemd/system-sleep/pre-suspend.sh

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

Σημείωση: έχετε ερωτήσεις σχετικά με το systemd system-sleep; Ελέγξτε το εγχειρίδιο με man systemd-suspend.service.

watch instagram story