Како покренути скрипте и команде за обустављање и наставак на Линук-у

Najefikasniji način za pokretanje skripti i komandi pre nego što se Linux sistem suspenduje ili nakon što se nastavi sa radom, jeste korišćenje systemd init sistema. Ovo je zato što ovaj init sistem ostvaruje direktnu komunikaciju sa jezgrom i podsistemima napajanja. Savladavanjem ovog alata, svaki korisnik može postići visok nivo kontrole nad svojim Linux operativnim sistemom.

Važno je napomenuti da eksperimentisanje sa init sistemom može biti rizično ako niste potpuno sigurni šta radite. Zato je preporučljivo da se striktno pridržavate uputstava u ovom vodiču kako biste izbegli potencijalne probleme.

Nisu sve moderne Linux distribucije bazirane na systemd init sistemu. Neke koriste upstart ili druge alternative. Ovaj vodič fokusiraće se na systemd, s obzirom da je to trenutno najrasprostranjeniji inicijalizacioni sistem. Ako koristite distribuciju koja se ne oslanja na systemd, konsultujte priručnik za vaš operativni sistem za detaljnija uputstva.

Napomena: Korisnici Debiana treba da zamene sve instance `/usr/lib/systemd/system-sleep` sa `/lib/systemd/system-sleep/`.

Pokretanje komandi pre suspendovanja

Da biste pokrenuli skriptu pre suspendovanja, smestite željenu bash skriptu u direktorijum `/usr/lib/systemd/system-sleep/`. Ove skripte mogu obavljati razne zadatke, ali moraju pratiti određenu sintaksu. Započnite otvaranjem terminala i dobijanjem root privilegija pomoću komande `sudo -s`.

Zatim, otvorite nano tekstualni editor unutar direktorijuma za spavanje sistema:

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

Dodajte shebang na početak skripte. Ovo je ključno, jer bez njega interpretator neće moći pravilno da pročita kod i komande:

#!/bin/bash

Sledeći deo skripte je „if“ uslov. On obaveštava sistem upravljanja napajanjem da „ako“ se sistem treba suspendovati, određena akcija treba da se izvrši. Unesite sledeći kod:

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

Zamenite `sh /path/to/script/to/run.sh` u skripti sa željenom komandom ili putanjom do skripte koju želite da pokrenete na vašem Linux računaru (ili serveru) neposredno pre suspendovanja sistema. Red nakon „if“ uslova ne mora nužno biti `sh /path/to/script/to/run.sh`. Možete ga koristiti i za izvršavanje drugih različitih komandi. Sve dok bash može da prepozna dati unos kao komandu, ona će biti izvršena.

Poslednji deo skripte za „pre suspendovanje“ je dodavanje „elif“ (else if) bloka. Ovaj deo skripte ne bi trebalo menjati u ovom slučaju, s obzirom da je fokus na izvršavanju akcije pre gašenja sistema, a ne prilikom ponovnog pokretanja:

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

Nakon što ste sve dodali u datoteku, pritisnite `Ctrl + O` da biste sačuvali promene u nanu.

Pokretanje komandi nakon nastavka rada

Izvršavanje komandi nakon nastavljanja rada funkcioniše na sličan način kao i pokretanje komandi pre suspendovanja. Jedina razlika je što umesto dodavanja komande nakon „if“ bloka skripte, ključni deo koda unosite nakon „elif“ uslova.

Da biste kreirali skriptu za nastavak rada, najpre dodajte shebang kao prvi red:

#!/bin/bash

U sledećem redu, dodajte „if“ deo skripte:

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

Nakon toga, dodajte „elif“ blok:

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

Ponovo, u redu je da se nakon „elif“ linije unese bilo koja validna komanda. Sve dok se radi o standardnoj operaciji komandne linije, systemd i bash će je izvršiti.

Pokretanje komandi i prilikom suspendovanja i prilikom nastavljanja rada

Ako želite da pokrenete dve različite komande, jednu pre suspendovanja i jednu nakon nastavka rada, to je moguće. Potrebno je samo izmeniti skriptu i dodati linije i ispod „if“ i „elif“ uslova.

Kao i obično, počnite dodavanjem shebang-a u skriptu:

#!/bin/bash

Zatim unesite „if“ deo koda:

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

Ispod „if“ bloka, zamenite „# replace with command“ sa komandom koju želite da izvršite neposredno pre suspendovanja sistema. Nakon toga, pređite na „elif“ blok i učinite isto:

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

Sačuvajte datoteku pritiskom na `Ctrl + O`.

Ažuriranje dozvola i korišćenje skripte

Sve neophodne komande nalaze se unutar skript fajla, ali pre pokretanja, potrebno je ažurirati dozvole. Otvorite terminal i dobijte root privilegije pomoću komande `su` ili `sudo -s`. Zatim unesite:

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

Od sada, svaki put kada suspendujete ili nastavite rad, prilagođene komande unutar skripte trebalo bi da se pokrenu.

Napomena: Imate dodatnih pitanja o sleep modu? Konsultujte man stranicu za systemd-suspend.service.