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.
Tartalomjegyzé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.
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 „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.
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.