Как да стартирате скриптове и команди при спиране и възобновяване на Linux

Най-добрият начин да изпълнявате скриптове и команди при спиране и възобновяване на Linux преди спиране (или след възобновяване) е да използвате системата systemd init. Това се дължи на факта, че системата init взаимодейства директно с ядрото и захранващите системи. Да се ​​научите да работите с този инструмент ще позволи на всеки потребител да получи много контрол върху своята операционна система Linux,

Моля, имайте предвид, че бъркането в системата за инициализиране на вашия компютър може да бъде опасно, ако не знаете какво правите. Не забравяйте да следвате инструкциите в този урок възможно най-точно, за да избегнете евентуални злополуки.

Не всяка модерна дистрибуция на Linux поддържа системата systemd init. Някои използват upstart или нещо съвсем друго. В този урок ще се съсредоточим върху systemd, тъй като това е най-често срещаната система за иницииране. Ако искате да изпълните тази задача на нещо, което не работи това, което разглеждаме в тази статия, помислете да разгледате ръководството на вашата операционна система за инструкции.

Забележка: Потребителите на Debian трябва да заменят всички екземпляри на usr/lib/systemd/system-sleep с /lib/systemd/system-sleep/

Изпълнение на команда преди спиране

За да стартирате скрипт преди спиране, поставете всеки файл на bash скрипт в директорията /usr/lib/systemd/system-sleep/. Самите скриптове могат да правят всичко, но има определен синтаксис, който трябва да се спазва. Започнете, като отворите прозорец на терминала. Използвайки sudo -s, спечелете root обвивка.

  5-те най-добри аудио инструменти за Linux

След това отворете нано текстовия редактор в системната директория за заспиване:

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

Добавете shebang в началото на скрипта. Добавянето на това е критично и без него интерпретаторът няма да може да прочете правилно кода и командите.

#!/bin/bash/

Следващата част от скрипта е „ако“. Това ще каже на системата за контрол на мощността, че „ако“ системата е на път да спре да спре, нещо трябва да се случи. Поставете кода по-долу:

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

Променете sh /path/to/script/to/run.sh в скрипта на това, което искате да стартирате на вашия Linux компютър (или сървър) точно преди системата да спре за спиране. Имайте предвид, че редът директно след „if“ не трябва да бъде sh /path/to/script/to/run.sh. Можете също да използвате това за изпълнение на различни команди. Докато bash може да го разпознае като команда, той ще работи.

  Как да играете Splitgate (бета) на Linux

Последната част от скрипта „преди спиране“ е да добавите частта „иначе ако“. Този аспект на скрипта не е необходимо да се променя, тъй като в този пример се притесняваме да направим нещо, преди системата да изпадне, а не когато се събуди отново.

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

Когато всичко е добавено към файла, натиснете Ctrl + O, за да запазите nano.

Изпълнение на команда след възобновяване

Изпълнението на команда след възобновяване работи много като стартиране на нещо преди спиране. Единствената реална разлика е вместо да добавяте команда след частта „if“ на скрипта, ще накарате най-важната част от кода да се появи след реда „elif“.

За да направите скрипт след автобиография, първо добавете shebang като първи ред.

#!bin/bash

На следващия ред добавете частта „if“ от скрипта.

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

С този къс код, поставен в bash скрипта, преместете се надолу и поставете секцията „else if“.

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

Още веднъж е добре да напишете каквото и да е под реда „elif“. Докато това е нормална командна операция, systemd и bash ще я стартира.

  Как да опростите DD с GdiskDump на Linux

Изпълнение на команди при стартиране и възобновяване

Ако искате да изпълните две противоположни команди; един преди спиране и един при възобновяване, възможно е. Това просто означава персонализиране на скрипта и добавяне на редове както под реда „if“, така и под реда „elseif“.

Както обикновено, започнете, като публикувате shebang в скрипта за преводача.

#!/bin/bash

След това поставете секцията if от кода.

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

Под if заменете „# заменете с команда“ с каквато и да е команда, която искате да изпълните точно преди системата да изпадне. След това преминете към секцията „elif“ и направете същото.

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

Запазете файла с Ctrl + O,

Актуализиране на разрешенията и използване на скрипта

Всички необходими команди са вътре във файла на скрипта, но преди да може да се изпълни, ще трябва да актуализирате разрешенията. Отворете терминал и спечелете root с: su или sudo -s. След това направете:

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

Оттук нататък, когато спрете или възобновите, персонализираните команди вътре в скрипта трябва да се изпълняват.

Забележка: имате въпроси относно системния сън на systemd? Проверете ръководството с man systemd-suspend.service.