Nejspolehlivější metoda, jak aktivovat skripty a specifické instrukce v průběhu uspávání a obnovování systému Linux, spočívá ve využití nástroje systemd init. Tato volba je dána tím, že systemd init je v přímé interakci s jádrem a systémy řízení spotřeby energie. Osvojením si práce s tímto nástrojem získá uživatel značnou kontrolu nad svým linuxovým operačním systémem.
Důležité upozornění: Neuvážená manipulace se systémem init může vést k nestabilitě vašeho počítače. Doporučuje se postupovat přesně podle instrukcí v tomto návodu, abyste předešli možným komplikacím.
Není každá současná linuxová distribuce postavena na systemd init. Některé alternativně používají upstart, či jiná řešení. Tento návod se zaměřuje na systemd, protože jde o nejčastěji používaný init systém. Pokud potřebujete řešit stejný úkol na systému s jinou implementací, doporučujeme nahlédnout do dokumentace vašeho operačního systému.
Důležité pro uživatele Debianu: Nahraďte prosím všechny výskyty /usr/lib/systemd/system-sleep
za /lib/systemd/system-sleep/
.
Spouštění příkazů před přechodem do režimu spánku
Pro aktivaci skriptu před přechodem do spánku umístěte libovolný bash skript do adresáře /usr/lib/systemd/system-sleep/
. Skripty mohou provádět libovolné úkoly, je ale nezbytné dodržovat danou strukturu. Začněte otevřením okna terminálu a získáním root přístupu pomocí sudo -s
.
Dále se v textovém editoru nano přesuňte do adresáře system-sleep
:
nano /usr/lib/systemd/system-sleep/pre-suspend.sh
Do začátku skriptu vložte shebang. Tento krok je klíčový pro správnou interpretaci kódu a příkazů.
#!/bin/bash/
Další částí skriptu je podmínka „if“. Ta sděluje systému pro řízení napájení, že „pokud“ systém přechází do spánku, má se provést určitá akce. Vložte následující kód:
if [ "${1}" == "pre" ]; then
sh /cesta/k/skriptu/ktery/se/ma/spustit.sh
Změňte sh /cesta/k/skriptu/ktery/se/ma/spustit.sh
na cokoliv, co si přejete vykonat na vašem Linux PC (nebo serveru) těsně předtím, než se systém uvede do režimu spánku. Řádek následující přímo za „if“ nemusí být jen spouštění skriptu. Můžete zde zadat i různé jiné příkazy. Pokud je bash dokáže rozpoznat, budou provedeny.
Poslední částí skriptu „before suspend“ je přidání části „else if“. Tuto část v tomto případě není nutné upravovat, protože se v této situaci soustředíme na akci před spánkem, nikoliv po probuzení.
elif [ "${1}" == "post" ]; then
# zde nic nevkládejte
fi
Po přidání všeho do souboru stiskněte Ctrl + O pro uložení v editoru nano.
Spouštění příkazů po probuzení
Provedení příkazu po obnovení z režimu spánku probíhá obdobně, jako spuštění příkazu před uspáním. Jediný rozdíl spočívá v tom, že místo přidání příkazu do „if“ bloku, se nejdůležitější kód vkládá za řádek „elif“.
Pro vytvoření skriptu pro obnovení, začněte přidáním shebangu jako prvního řádku:
#!bin/bash
Na další řádek vložte sekci „if“.
if [ "${1}" == "pre" ]; then
# zde nic nevkládejte
S tímto kódem vloženým do bash skriptu se posuňte dolů a vložte „else if“ část:
elif [ "${1}" == "post" ]; then
sh /cesta/k/skriptu/ktery/se/ma/spustit.sh
fi
Stejně jako dříve, je možné pod řádek „elif“ vložit jakýkoliv příkaz, který má systemd a bash vykonat.
Spouštění příkazů při uspání i obnovení
Je možné spustit dva protichůdné příkazy: jeden před uspáním a jeden po probuzení. To vyžaduje pouze úpravu skriptu a přidání řádků pod „if“ i pod „elseif“.
Začněte standardně přidáním shebangu do skriptu:
#!/bin/bash
Dále vložte „if“ sekci kódu:
if [ "${1}" == "pre" ]; then
# nahradte příkazem
V sekci „if“ nahraďte # nahradte příkazem
libovolným příkazem, který chcete spustit těsně před přechodem do režimu spánku. Následně přejděte do sekce „elif“ a proveďte to samé:
elif [ "${1}" == "post" ]; then
# nahradte příkazem
fi
Soubor uložte pomocí Ctrl + O.
Aktualizace oprávnění a spuštění skriptu
Všechny potřebné příkazy jsou již ve skriptu, ale před jeho použitím je třeba aktualizovat oprávnění. Otevřete terminál a získejte root přístup pomocí su
nebo sudo -s
. Poté proveďte:
chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh
Od této chvíle by se při každém uspání a probuzení měly spouštět vlastní příkazy, které jste definovali ve skriptu.
Poznámka: Máte dotazy týkající se uspávání systému pomocí systemd? Podívejte se do manuálu pomocí příkazu man systemd-suspend.service
.