- - Slik kjører man skripter og kommandoer på suspendere og gjenoppta på Linux

Slik kjører man skript og kommandoer på suspendere og gjenoppta på Linux

Den beste måten å kjøre skript og kommandoer påsuspendere og gjenoppta på Linux før suspendering (eller etter gjenopptakelse) skal bruke systemd init-systemet. Dette skyldes det faktum at init-systemet samhandler direkte med kjernen, og kraftsystemer. Å lære å jobbe med dette verktøyet vil tillate enhver bruker å få mye kontroll over Linux-operativsystemet sitt,

Vennligst forstå det å rote med initsystem på din PC kan være farlig hvis du ikke vet hva du gjør. Følg instruksjonene i denne opplæringen så nøye som mulig for å unngå mulige uhell.

Ikke alle moderne Linux-distribusjoner støttersystemd init system. Noen bruker upstart eller noe annet helt. I denne opplæringen fokuserer vi på systemd da det er det vanligste initieringssystemet. Hvis du ønsker å utføre denne oppgaven på noe som ikke kjører det vi dekker i denne artikkelen, kan du vurdere å se i operativsystemets manual for instruksjoner.

Merk: Debian-brukere bør erstatte alle forekomster av usr / lib / systemd / system-søvn med / Lib / systemd / system-sleep /

Kjører en kommando før du suspenderer

Hvis du vil kjøre et skript før du stopper det, plasserer du en hvilken som helst basskriptfil i / Usr / lib / systemd / system-sleep / katalogen. Skriptene i seg selv kan gjøre hva som helst, men det er en viss syntaks som må følges. Begynn med å åpne et terminalvindu. Bruk sudo -er, få et rotskall.

Deretter opp nano-tekstredigereren i system-sleep-katalogen:

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

Legg shebang til starten av skriptet. Å legge til dette er kritisk, og uten det vil ikke tolken kunne lese koden og kommandoene riktig.

#!/bin/bash/

Den neste delen av skriptet er “hvis”. Dette vil fortelle strømstyringssystemet at "hvis" systemet er i ferd med å gå ned for å stanse, bør noe skje. Lim inn koden nedenfor:

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

Endring sh /path/to/script/to/run.sh i skriptet til hva du måtte ønske å kjøre på din Linux-PC (eller server) rett før systemet går ned for å stanse. Husk at linjen rett etter “hvis” ikke trenger å være det sh /path/to/script/to/run.sh. Du kan også bruke dette til å utføre forskjellige kommandoer. Så lenge bash kan gjenkjenne den som en kommando, kjører den.

Den siste delen av “før suspendere” -skriptet er å legge til “annet hvis” -delen. Dette aspektet av skriptet trenger ikke endres, da vi i dette eksemplet er bekymret for å gjøre noe før systemet går ned, og ikke når det våkner opp igjen.

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

Når alt er lagt til i filen, trykk Ctrl + O for å redde nano.

Kjører en kommando etter CV

Å utføre en kommando etter gjenopptak fungerer omtrent somkjører noe før suspendere. Den eneste virkelige forskjellen er i stedet for å legge til en kommando etter “if” -delen av skriptet, vil du få den viktigste delen av koden til å skje etter “elif” -linjen.

For å lage et skript etter gjenoppta må du først legge til shebang som den første linjen.

#!bin/bash

Legg til "if" -delen av skriptet på neste linje.

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

Når den biten kode limes inn i bash-skriptet, flytter du ned og limer inn “annet hvis” -delen.

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

Nok en gang er det OK å skrive noe under "elif" -linjen. Så lenge det er en normal kommandoperasjonssystem og bash vil kjøre den.

Kjører kommandoer ved oppstart og gjenoppta

Hvis du vil kjøre to motsatte kommandoer; enfør du suspenderer, og en igjen, er det mulig. Det betyr bare å tilpasse skriptet og legge til linjer under både "if" -linjen, så vel som "oarsif" -linjen.

Begynn som vanlig med å legge shebang inn i manuset til tolken.

#!/bin/bash

Deretter limer du if-delen av koden.

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

Under if, bytt ut "# erstatt med kommando" med hvilken kommando du vil kjøre rett før systemet går ned. Gå deretter til "elif" -delen, og gjør det samme.

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

Lagre filen med Ctrl + O,

Oppdatering av tillatelser og bruk av skriptet

Alle nødvendige kommandoer er inne i skriptfilen, men før den kan kjøres, må du oppdatere tillatelsene. Åpne en terminal, og få rot med: su eller sudo -s. Så gjør:

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

Fra nå av, hver gang du suspenderer eller fortsetter, skal tilpassede kommandoer inne i skriptet kjøres.

Merk: har du spørsmål om systemd system-sleep? Sjekk manualen med mann systemd-suspend.service.

kommentarer