Jak spouštět skripty a příkazy při pozastavení a obnovení v systému Linux

Nejlepší způsob, jak spouštět skripty a příkazy při pozastavení a obnovení v Linuxu před pozastavením (nebo po obnovení), je použít systém systemd init. To je způsobeno skutečností, že systém init interaguje přímo s jádrem a napájecími systémy. Naučit se pracovat s tímto nástrojem umožní každému uživateli získat velkou kontrolu nad svým operačním systémem Linux,

Uvědomte si prosím, že manipulace se systémem init na vašem PC může být nebezpečná, pokud nevíte, co děláte. Ujistěte se, že co nejpřesněji dodržujete pokyny v tomto tutoriálu, abyste předešli případným nehodám.

Ne každá moderní distribuce Linuxu podporuje systém systemd init. Někteří používají upstart nebo něco úplně jiného. V tomto tutoriálu se zaměříme na systemd, protože je to nejběžnější iniciační systém. Pokud chcete provést tento úkol na něčem, co nespouští to, co popisujeme v tomto článku, zvažte pokyny pro nahlédnutí do manuálu k operačnímu systému.

Poznámka: Uživatelé Debianu by měli nahradit všechny instance usr/lib/systemd/system-sleep za /lib/systemd/system-sleep/

Spuštění příkazu před pozastavením

Chcete-li spustit skript před pozastavením, umístěte libovolný soubor skriptu bash do adresáře /usr/lib/systemd/system-sleep/. Samotné skripty mohou dělat cokoli, ale existuje určitá syntaxe, kterou je nutné dodržet. Začněte otevřením okna terminálu. Pomocí sudo -s získejte kořenový shell.

Dále přejděte do textového editoru nano v adresáři system-sleep:

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

Přidejte shebang na začátek skriptu. Přidání tohoto je kritické a bez něj nebude interpret schopen správně číst kód a příkazy.

#!/bin/bash/

Další částí skriptu je „pokud“. To sdělí systému řízení napájení, že „jestliže“ systém přejde do režimu spánku, mělo by se něco stát. Vložte níže uvedený kód:

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

Změňte sh /path/to/script/to/run.sh ve skriptu na cokoliv, co byste chtěli spustit na vašem Linux PC (nebo serveru) těsně předtím, než systém přejde do režimu spánku. Mějte na paměti, že řádek přímo za „if“ nemusí být sh /cesta/k/script/k/run.sh. Můžete to také použít k provádění různých příkazů. Dokud to bash dokáže rozpoznat jako příkaz, poběží.

Poslední částí skriptu „before suspend“ je přidání části „else if“. Tento aspekt skriptu není třeba upravovat, protože v tomto příkladu se obáváme, že něco uděláme, než se systém zhroutí, a ne až se znovu probudí.

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

Když je vše přidáno do souboru, stiskněte Ctrl + O pro uložení nano.

Spuštění příkazu po obnovení

Provedení příkazu po obnovení funguje podobně jako spuštění něčeho před pozastavením. Jediný skutečný rozdíl je v tom, že místo přidání příkazu za část skriptu „if“ byste udělali, že nejdůležitější část kódu bude za řádkem „elif“.

Chcete-li vytvořit skript po obnovení, nejprve přidejte jako první řádek shebang.

#!bin/bash

Na další řádek přidejte část skriptu „if“.

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

S tímto kouskem kódu vloženým do bash skriptu přejděte dolů a vložte část „jinak, pokud“.

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

Opět platí, že je v pořádku napsat cokoli pod řádek „elif“. Pokud jde o normální příkazovou operaci, spustí ji systemd a bash.

Spouštění příkazů při spuštění a obnovení

Pokud byste chtěli spustit dva opačné příkazy; jeden před pozastavením a jeden při obnovení, je to možné. Znamená to pouze přizpůsobení skriptu a přidání řádků pod řádek „if“ i pod řádek „elseif“.

Jako obvykle, začněte tím, že pošlete text do scénáře pro tlumočníka.

#!/bin/bash

Dále vložte if sekci kódu.

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

V části if nahraďte „# nahradit příkazem“ jakýmkoli příkazem, který chcete spustit těsně předtím, než se systém zhroutí. Poté přejděte do sekce „elif“ a udělejte totéž.

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

Uložte soubor pomocí Ctrl + O,

Aktualizace oprávnění a používání skriptu

Všechny potřebné příkazy jsou uvnitř souboru skriptu, ale než bude možné jej spustit, budete muset aktualizovat oprávnění. Otevřete terminál a získejte root pomocí: su nebo sudo -s. Pak proveďte:

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

Od této chvíle by se při každém pozastavení nebo obnovení měly spustit vlastní příkazy uvnitř skriptu.

Poznámka: Máte otázky týkající se spánku systému systemd? Podívejte se do manuálu na man systemd-suspend.service.