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