Szkriptek és parancsok futtatása felfüggesztés és folytatás esetén Linuxon

A legjobb módja a parancsfájlok és parancsok futtatásának felfüggesztéskor és folytatáskor Linuxon a felfüggesztés előtt (vagy a folytatás után), ha a systemd init rendszert használja. Ez annak a ténynek köszönhető, hogy az init rendszer közvetlenül kölcsönhatásba lép a kernellel és az energiarendszerekkel. Az eszközzel való munka elsajátítása lehetővé teszi bármely felhasználó számára, hogy nagy irányítást szerezzen Linux operációs rendszere felett,

Kérjük, vegye figyelembe, hogy a számítógépen lévő init rendszerrel való szórakozás veszélyes lehet, ha nem tudja, mit csinál. Ügyeljen arra, hogy a lehető legpontosabban kövesse az oktatóanyag utasításait, hogy elkerülje az esetleges szerencsétlenségeket.

Nem minden modern Linux disztribúció támogatja a systemd init rendszert. Vannak, akik upstartot használnak, vagy valami egészen mást. Ebben az oktatóanyagban a systemd-re fogunk összpontosítani, mivel ez a leggyakoribb iniciációs rendszer. Ha ezt a feladatot olyasmivel szeretné elvégezni, amely nem az ebben a cikkben leírtakat futtatja, fontolja meg az operációs rendszere kézikönyvében az utasításokat.

Megjegyzés: A Debian felhasználóknak az usr/lib/systemd/system-sleep összes példányát a /lib/systemd/system-sleep/ elemre kell cserélniük.

Parancs futtatása a felfüggesztés előtt

A felfüggesztés előtti szkript futtatásához helyezzen el bármilyen bash szkriptfájlt a /usr/lib/systemd/system-sleep/ könyvtárba. Maguk a szkriptek bármire képesek, de van egy bizonyos szintaxis, amelyet be kell tartani. Kezdje a terminál ablak megnyitásával. A sudo -s használatával szerezzen be egy gyökérhéjat.

  Mi a Microsoft – WPD

Ezután nyissa fel a nano szövegszerkesztőt a system-alvó könyvtárban:

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

Adja hozzá a shebang-ot a szkript elejéhez. Ennek hozzáadása kritikus, és enélkül a tolmács nem tudja megfelelően olvasni a kódot és a parancsokat.

#!/bin/bash/

A forgatókönyv következő része az „if”. Ez közli a teljesítményszabályozó rendszerrel, hogy „ha” a rendszer felfüggesztésre készül, akkor valaminek történnie kell. Illessze be az alábbi kódot:

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

Módosítsa az sh /path/to/script/to/run.sh-t a szkriptben arra, amit a Linux PC-jén (vagy szerverén) szeretne futtatni, közvetlenül a rendszer felfüggesztése előtt. Ne feledje, hogy a közvetlenül az „if” utáni sornak nem kell az sh /path/to/script/to/run.sh értékűnek lennie. Ezt különféle parancsok végrehajtására is használhatja. Amíg a bash parancsként ismeri fel, addig fut.

  A Xubuntu használata Raspberry Pi 4-en

A „felfüggesztés előtt” szkript utolsó része az „else if” rész hozzáadása. A szkript ezen aspektusát nem kell módosítani, mivel ebben a példában attól tartunk, hogy a rendszer leállása előtt csináljunk valamit, és nem akkor, amikor újra felébred.

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

Ha mindent hozzáadott a fájlhoz, nyomja meg a Ctrl + O billentyűket a nano mentéséhez.

Parancs futtatása a folytatás után

Egy parancs végrehajtása a folytatás után ugyanúgy működik, mint valami felfüggesztés előtti futtatása. Az egyetlen valódi különbség az, hogy ahelyett, hogy a parancsfájl „if” része után parancsot adna hozzá, a kód legfontosabb részét az „elif” sor után kell előállítania.

Az önéletrajz utáni szkript készítéséhez először adja hozzá a shebang-ot első sorként.

#!bin/bash

A következő sorba adja hozzá a szkript „if” részét.

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

Ha ezt a kódrészletet beilleszti a bash szkriptbe, lépjen lefelé, és illessze be az „else if” részt.

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

Még egyszer, nem baj, ha bármit ír az „elif” sor alá. Amíg ez egy normál parancsművelet, a systemd és a bash futtatja.

  5 kiváló letöltéskezelő Linuxhoz

Parancsok futtatása indításkor és folytatáskor

Ha két ellentétes parancsot szeretne futtatni; egy a felfüggesztés előtt és egy az újraindításkor lehetséges. Ez csak a szkript testreszabását és sorok hozzáadását jelenti az „if” és az „elseif” sor alá.

A szokásos módon kezdje azzal, hogy elküldi a shebang-ot a forgatókönyvbe a tolmács számára.

#!/bin/bash

Ezután illessze be a kód if szakaszát.

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

Az if alatt cserélje ki a „# csere parancsra” szöveget arra a paranccsal, amelyet közvetlenül a rendszer leállása előtt szeretne futtatni. Ezután lépjen az „elif” részre, és tegye ugyanezt.

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

Mentse el a fájlt a Ctrl + O billentyűkombinációval,

Az engedélyek frissítése és a szkript használata

Az összes szükséges parancs a szkriptfájlban található, de mielőtt futni tudna, frissítenie kell az engedélyeket. Nyiss meg egy terminált, és szerezd meg a root parancsot: su vagy sudo -s. Akkor csináld:

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

Mostantól kezdve, amikor felfüggeszti vagy folytatja, a szkripten belüli egyéni parancsoknak futniuk kell.

Megjegyzés: kérdései vannak a rendszeralvó üzemmóddal kapcsolatban? Ellenőrizze a kézikönyvet a man systemd-suspend.service segítségével.