Sådan kører du scripts og kommandoer på suspendering og genoptagelse på Linux

Indholdsfortegnelse:

Sådan kører du scripts og kommandoer på suspendering og genoptagelse på Linux
Sådan kører du scripts og kommandoer på suspendering og genoptagelse på Linux
Anonim

Den bedste måde at køre scripts og kommandoer på suspendering og genoptagelse på Linux før suspendering (eller efter genoptagelse) er at bruge systemd init systemet. Dette skyldes det faktum, at init-systemet interagerer direkte med kernen og elsystemerne. At lære at arbejde med dette værktøj vil give enhver bruger mulighed for at få meget kontrol over deres Linux-operativsystem,

Vær venlig at forstå, at messing med init-systemet på din pc kan være farligt, hvis du ikke ved hvad du gør. Sørg for at følge instruktionerne i denne vejledning så tæt som muligt for at undgå eventuelle uheld.

Ikke alle moderne Linux-distribution understøtter systemd init-systemet. Nogle bruger upstart eller noget helt andet. I denne tutorial fokuserer vi på systemd, da det er det mest almindelige initieringssystem. Hvis du søger at udføre denne opgave på noget, der ikke løber, hvad vi dækker i denne artikel, skal du overveje at kigge på operativsystemets manual for instruktioner.

Bemærk: Debian-brugere skal erstatte alle forekomster af usr / lib / systemd / system-søvn med / Lib / systemd / system-søvn /

Kører en kommando inden suspendering

Image
Image

Hvis du vil køre et script før suspendering, skal du placere en bash script fil i / Usr / lib / systemd / system-søvn / vejviser. Skripterne selv kan gøre alt, men der er en vis syntaks, der skal overholdes. Start med at åbne et terminalvindue. Brug sudo-s, få en root shell.

Dernæst op nano tekst editor i system-sovende mappe:

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

Tilføj shebang til start af scriptet. Tilføjelse af dette er kritisk, og uden det vil tolken ikke være i stand til korrekt at læse koden og kommandoerne.

#! / Bin / bash /

Den næste del af scriptet er "hvis". Dette vil fortælle strømstyringssystemet, at "hvis" systemet er ved at gå ned for at suspendere, skal der ske noget. Indsæt koden nedenfor:

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

Lave om sh /path/to/script/to/run.sh i scriptet til hvad du gerne vil køre på din Linux-pc (eller server) lige før systemet går ned for at suspendere. Husk at linjen direkte efter "hvis" ikke behøver at være sh /path/to/script/to/run.sh. Du kan også bruge dette til at udføre forskellige kommandoer. Så længe bash kan genkende det som en kommando, vil den løbe.

Den sidste del af scriptet "før suspendering" er at tilføje "else if" -delen. Dette aspekt af scriptet behøver ikke ændres, som i dette eksempel er vi bekymrede for at gøre nogetFør systemet går ned, og ikke når det vågner op igen.

elif ["$ {1}" == "post"]; så # ingenting går her fi

Når alt er blevet tilføjet til filen, skal du trykke på Ctrl + O at redde nano.

Kører en kommando efter genoptagelse

Udførelse af en kommando efter genoptagelse virker som om at køre noget før suspendering. Den eneste reelle forskel er i stedet for at tilføje en kommando efter "hvis" delen af scriptet, vil du få den vigtigste del af koden til at forekomme efter "elif" linjen.
Udførelse af en kommando efter genoptagelse virker som om at køre noget før suspendering. Den eneste reelle forskel er i stedet for at tilføje en kommando efter "hvis" delen af scriptet, vil du få den vigtigste del af koden til at forekomme efter "elif" linjen.

For at lave et post-CV-script skal du først tilføje shebang som første linje.

#! Bin / bash

I næste linje tilføjes "if" -delen af scriptet.

hvis ["$ {1}" == "pre"]; så # ingenting går her

Med den smule kode indsat i bash scriptet, skal du flytte ned og indsætte "andet hvis" sektionen.

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

Endnu engang er det ok at skrive noget under "elif" -linjen. Så længe det er en normal kommando operation systemd og bash vil køre det.

Kørende kommandoer ved opstart og genoptagelse

Hvis du gerne vil køre to modsatte kommandoer; en før suspendering, og en til genoptagelse, er det muligt. Det betyder bare at tilpasse scriptet og tilføje linjer under både "if" -linjen og "elseif" -linjen.
Hvis du gerne vil køre to modsatte kommandoer; en før suspendering, og en til genoptagelse, er det muligt. Det betyder bare at tilpasse scriptet og tilføje linjer under både "if" -linjen og "elseif" -linjen.

Som sædvanlig, start med at sende shebang til scriptet til tolken.

#! / Bin / bash

Derefter indsætter du koden for hvis kode.

hvis ["$ {1}" == "pre"]; derefter # erstattes med kommando

Under hvis, erstat "# erstat med kommando" med den kommando, du gerne vil køre lige før systemet går ned. Gå derefter til "elif" sektionen, og gør det samme.

elif ["$ {1}" == "post"]; derefter # erstattes med kommando fi

Gem filen med Ctrl + O,

Opdatering af tilladelser og brug af scriptet

Alle de nødvendige kommandoer er inde i scriptfilen, men før det kan køre, skal du opdatere tilladelserne. Åbn en terminal, og få rod med: su eller sudo-s. Så gør:

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

Fra nu af, når du suspenderer eller genoptager, skal brugerdefinerede kommandoer inde i scriptet køre.

Bemærk: Har du spørgsmål om systemd system-søvn? Tjek manualen med mand systemd-suspend.service.

Populært emne.