- - Sådan køres manuskripter og kommandoer til suspension og genoptag på Linux

Sådan køres manuskripter og kommandoer på Suspend og Genoptag på Linux

Den bedste måde at køre scripts og kommandoer påsuspendere og genoptage på Linux, før suspensionen (eller efter genoptagelse) er at bruge systemd init-systemet. Dette skyldes det faktum, at init-systemet interagerer direkte med kernen og kraftsystemer. At lære at arbejde med dette værktøj giver alle brugere mulighed for at få en masse kontrol over deres Linux-operativsystem,

Forstå venligst, at rodet med initsystem på din pc kan være farligt, hvis du ikke ved, hvad du laver. Sørg for at følge instruktionerne i denne tutorial så tæt som muligt for at undgå mulige uheld.

Ikke enhver moderne Linux-distribution understøttersystemd init system. Nogle bruger upstart eller noget andet helt. I denne tutorial vil vi fokusere på systemd, da det er det mest almindelige initieringssystem. Hvis du ønsker at udføre denne opgave på noget, der ikke kører det, vi dækker i denne artikel, kan du overveje at undersøge dit operativsystems 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ør en kommando inden suspension

Hvis du vil køre et script før suspension, skal du placere en hvilken som helst bash-scriptfil i / Usr / lib / systemd / system-søvn / vejviser. Selve manuskripterne kan gøre alt, men der er en vis syntaks, der skal overholdes. Start med at åbne et terminalvindue. Brug sudo -s, få en rodskal.

Dernæst op nano-teksteditoren i system-sleep-biblioteket:

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

Føj shebang til starten af ​​scriptet. Det er kritisk at tilføje dette, og uden det kan tolken ikke læse koden og kommandoerne korrekt.

#!/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 herunder:

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

Lave om sh /path/to/script/to/run.sh i scriptet til hvad du end 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, kører det.

Den sidste del af scriptet "før suspendere" er at tilføje delen "andet hvis". Dette aspekt af scriptet behøver ikke ændres, da vi i dette eksempel er bekymrede for at gøre noget Før systemet går ned, og ikke når det vågner op igen.

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

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

Kørsel af en kommando efter CV

At udføre en kommando efter CV fungerer meget somkører noget før suspenderer. Den eneste virkelige forskel er i stedet for at tilføje en kommando efter “if” -delen af ​​scriptet, vil du få den vigtigste del af koden til at ske efter “elif” linjen.

For at oprette et script efter genoptage skal du først tilføje shebang som den første linje.

#!bin/bash

På den næste linje skal du tilføje “if” -delen af ​​scriptet.

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

Når den bit kode indsættes i bash-scriptet, skal du flytte ned og indsætte afsnittet "andet hvis".

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

Igen er det OK at skrive noget under “elif” linjen. Så længe det er et normalt kommandofunktionssystem og bash vil køre det.

Kører kommandoer ved opstart og genoptag

Hvis du gerne vil køre to modsatte kommandoer; enfør du suspenderer, og en igen, er det muligt. Det betyder bare at tilpasse scriptet og tilføje linjer under både 'if'-linjen såvel som' annarsif'-linjen.

Start som normalt med at placere shebang i scriptet til tolken.

#!/bin/bash

Indsæt derefter if-afsnittet i koden.

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

Under if skal du udskifte "# erstatte med kommando" med den kommando, du vil køre lige inden systemet går ned. Gå derefter til afsnittet "elif", og gør det samme.

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

Gem filen med Ctrl + O,

Opdatering af tilladelser og brug af scriptet

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

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

Fra nu af skal hver gang du suspenderer eller genoptager tilpassede kommandoer inde i scriptet køre.

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

Kommentarer