- - Hur man kör skript och kommandon vid avstängning och återupptagning på Linux

Hur man kör skript och kommandon på avbryt och återupptas på Linux

Det bästa sättet att köra skript och kommandon påstänga av och återuppta på Linux innan du avbryter (eller efter att återuppta) ska använda systemd init-systemet. Detta beror på att init-systemet interagerar direkt med kärnan och kraftsystemen. Att lära sig att arbeta med detta verktyg gör att alla användare kan få mycket kontroll över sitt Linux-operativsystem,

Vänligen förstå att det röra med initsystem på din dator kan vara farligt om du inte vet vad du gör. Se till att följa instruktionerna i den här handledning så nära som möjligt för att undvika eventuella missöden.

Inte varje modern Linux-distribution stödersystemd init system. Vissa använder upstart eller något annat helt. I den här tutorialen kommer vi att fokusera på systemd eftersom det är det vanligaste initieringssystemet. Om du vill utföra den här uppgiften på något som inte kör det vi täcker i den här artikeln, kan du överväga att titta i ditt operativsystems handbok för instruktioner.

Obs: Debian-användare bör ersätta alla instanser av usr / lib / SYSTEMD / system-sömn med / Lib / SYSTEMD / system-sömn /

Kör en kommando innan du avbryter

För att köra ett skript innan du avbryter, lägger du någon bash-skriptfil i / Usr / lib / SYSTEMD / system-sömn / katalogen. Skripten själva kan göra vad som helst, men det finns en viss syntax som måste följas. Börja med att öppna ett terminalfönster. Använd sudo-er, få ett rotskal.

Därefter upp nano textredigeraren i system-sleep-katalogen:

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

Lägg till shebang i början av skriptet. Att lägga till detta är avgörande, och utan det kommer tolkaren inte att kunna läsa koden och kommandona korrekt.

#!/bin/bash/

Nästa del av skriptet är ”if”. Detta säger kraftkontrollsystemet att ”om” systemet är på väg att gå ner för att stänga av, borde något hända. Klistra in koden nedan:

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

Förändra sh /path/to/script/to/run.sh i skriptet till vad du vill köra på din Linux-PC (eller server) precis innan systemet släpps för att stänga av. Tänk på att linjen direkt efter “om” inte behöver vara sh /path/to/script/to/run.sh. Du kan också använda detta för att köra olika kommandon. Så länge bash kan känna igen det som ett kommando, kommer det att köras.

Den sista delen av skriptet "före avstängning" är att lägga till "annars om" -delen. Denna aspekt av skriptet behöver inte ändras, eftersom vi i det här exemplet är oroliga för att göra något innan systemet går ner och inte när det vaknar upp igen.

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

När allt har lagts till i filen, tryck på Ctrl + O för att spara nano.

Köra en kommando efter CV

Att utföra ett kommando efter återupptagning fungerar ungefärköra något innan avbryta. Den enda verkliga skillnaden är istället för att lägga till ett kommando efter "if" -delen av skriptet, så skulle du göra att den viktigaste delen av koden inträffar efter "elif" -raden.

För att skapa ett skript efter att återuppta, lägger du till shebang som första raden.

#!bin/bash

Lägg till "if" -delen av skriptet på nästa rad.

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

Med den bitkoden som klistras in i bash-skriptet, flytta nedåt och klistra in avsnittet "annat om".

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

Återigen är det OK att skriva något under "elif" -raden. Så länge det är ett normalt kommandoprogram systemd och bash kommer att köra det.

Köra kommandon vid start och återuppta

Om du vill köra två motsatta kommandon; ettinnan du avbryter, och en vid återupptagning, är det möjligt. Det betyder bara att anpassa skriptet och lägga till rader under både "if" -raden och "annarsif" -raden.

Börja som vanligt med att placera shebang i skriptet för tolkaren.

#!/bin/bash

Klistra sedan in if-delen i koden.

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

Under if, byt ut "# byt ut med kommando" med vilket kommando du vill köra direkt innan systemet går ner. Flytta sedan till avsnittet "elif" och gör samma sak.

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

Spara filen med Ctrl + O,

Uppdatera behörigheter och använda skriptet

Alla nödvändiga kommandon finns i skriptfilen, men innan den kan köras måste du uppdatera behörigheterna. Öppna en terminal och få rot med: su eller sudo -s. Gör sedan:

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

Från och med nu, när du stänger eller återupptar, bör anpassade kommandon inuti skriptet köras.

Obs: har du frågor om systemd system-sömn? Kontrollera manualen med man systemd-suspend.service.

kommentarer