Cum să rulați scripturi și comenzi la suspendare și reluare pe Linux

Cel mai bun mod de a rula scripturi și comenzi pe suspendare și reluare pe Linux înainte de suspendare (sau după reluare) este să utilizați sistemul systemd init. Acest lucru se datorează faptului că sistemul init interacționează direct cu nucleul și sistemele de alimentare. Învățarea să lucreze cu acest instrument va permite oricărui utilizator să obțină mult control asupra sistemului de operare Linux,

Vă rugăm să înțelegeți că jocul cu sistemul init de pe computer poate fi periculos dacă nu știți ce faceți. Asigurați-vă că urmați instrucțiunile din acest tutorial cât mai îndeaproape posibil, pentru a evita eventualele accidentări.

Nu orice distribuție Linux modernă acceptă sistemul systemd init. Unii folosesc parvenit sau cu totul altceva. În acest tutorial, ne vom concentra pe systemd, deoarece este cel mai comun sistem de inițiere. Dacă doriți să îndepliniți această sarcină pe ceva care nu rulează ceea ce acoperim în acest articol, luați în considerare instrucțiunile în manualul sistemului de operare.

Notă: utilizatorii Debian ar trebui să înlocuiască toate instanțele de usr/lib/systemd/system-sleep cu /lib/systemd/system-sleep/

Rularea unei comenzi înainte de suspendare

Pentru a rula un script înainte de suspendare, plasați orice fișier script bash în directorul /usr/lib/systemd/system-sleep/. Scripturile în sine pot face orice, dar există o anumită sintaxă care trebuie respectată. Începeți prin a deschide o fereastră de terminal. Folosind sudo -s, obțineți un shell rădăcină.

Apoi, ridicați editorul de text nano din directorul de repaus al sistemului:

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

Adăugați shebang la începutul scenariului. Adăugarea acestui lucru este critică și, fără ea, interpretul nu va putea citi corect codul și comenzile.

#!/bin/bash/

Următoarea parte a scenariului este „dacă”. Acest lucru va spune sistemului de control al puterii că „dacă” sistemul este pe cale să se suspende, ar trebui să se întâmple ceva. Lipiți codul de mai jos:

if [ "${1}" == "pre" ]; then
sh /path/to/script/to/run.sh

Schimbați sh /path/to/script/to/run.sh în script la ceea ce doriți să rulați pe computerul (sau serverul) Linux chiar înainte ca sistemul să se suspende. Rețineți că linia direct după „dacă” nu trebuie să fie sh /path/to/script/to/run.sh. Puteți folosi acest lucru și pentru a executa diverse comenzi. Atâta timp cât bash îl poate recunoaște ca o comandă, va rula.

  Cum se instalează JetBrains DataGrip pe Linux

Ultima parte a scriptului „înainte de suspendare” este adăugarea porțiunii „altfel dacă”. Acest aspect al scriptului nu trebuie modificat, deoarece, în acest exemplu, suntem îngrijorați să facem ceva înainte ca sistemul să se defecteze, și nu atunci când se reactivează.

elif [ "${1}" == "post" ]; then
# nothing goes here
fi

Când totul a fost adăugat la fișier, apăsați Ctrl + O pentru a salva nano.

Rularea unei comenzi după reluare

Executarea unei comenzi după reluare funcționează la fel ca să rulați ceva înainte de suspendare. Singura diferență reală este, în loc să adăugați o comandă după porțiunea „dacă” a scriptului, veți face ca cea mai importantă parte a codului să apară după linia „elif”.

Pentru a crea un script post-reluare, mai întâi, adăugați shebang ca primă linie.

#!bin/bash

Pe linia următoare, adăugați porțiunea „dacă” a scriptului.

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

Cu acel fragment de cod lipit în scriptul bash, deplasați-vă în jos și inserați secțiunea „altfel dacă”.

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

Încă o dată, este în regulă să scrieți orice sub linia „elif”. Atâta timp cât este o operație de comandă normală, systemd și bash o vor rula.

Rularea comenzilor la pornire și reluare

Dacă doriți să rulați două comenzi opuse; unul inainte de suspendare, si unul la reluare, se poate. Înseamnă doar personalizarea scriptului și adăugarea de linii atât sub linia „dacă”, cât și sub linia „elseif”.

Ca de obicei, începeți prin a posta shebang-ul în scenariul interpretului.

#!/bin/bash

Apoi, lipiți secțiunea if a codului.

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

Sub if, înlocuiți „# înlocuiți cu comandă” cu orice comandă pe care doriți să o executați chiar înainte ca sistemul să cadă. Apoi, treceți la secțiunea „elif” și faceți același lucru.

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

Salvați fișierul cu Ctrl + O,

  8 cele mai bune aplicații Linux pentru a vă partaja desktopul

Actualizarea permisiunilor și utilizarea scriptului

Toate comenzile necesare sunt în interiorul fișierului script, dar înainte de a putea rula, va trebui să actualizați permisiunile. Deschideți un terminal și obțineți root cu: su sau sudo -s. Atunci fa:

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

De acum înainte, ori de câte ori suspendați sau reluați, comenzile personalizate din interiorul scriptului ar trebui să ruleze.

Notă: aveți întrebări despre systemd system-sleep? Verificați manualul cu man systemd-suspend.service.