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

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

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

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

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

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

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

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

Έπειτα, ανοίξτε τον επεξεργαστή κειμένου νανο στον εσωτερικό κατάλογο του συστήματος-ύπνου:

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

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

#!/bin/bash/

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

if [ "${1}" == "pre" ]; then
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}" == "post" ]; then
# nothing goes here
fi

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

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

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

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

#!bin/bash

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

if [ "${1}" == "pre" ]; then
# nothing goes here

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

elif [ "${1}" == "post" ]; then
sh /path/to/script/to/run.sh
fi

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

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

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

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

#!/bin/bash

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

if [ "${1}" == "pre" ]; then
# replace with command

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

elif [ "${1}" == "post" ]; then
#  replace with command
fi

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

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

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

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

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

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

Σχόλια