De beste manier om scripts en opdrachten uit te voerenonderbreken en hervatten op Linux voordat het onderbreken (of na hervatten) het systemd init-systeem gebruikt. Dit komt door het feit dat het init-systeem rechtstreeks in wisselwerking staat met de kernel en power-systemen. Door te leren werken met deze tool kan elke gebruiker veel controle krijgen over zijn Linux-besturingssysteem,
Begrijp alsjeblieft dat gedoe met de initsysteem op uw pc kan gevaarlijk zijn als u niet weet wat u doet. Volg de instructies in deze zelfstudie zo nauwkeurig mogelijk om mogelijke ongelukken te voorkomen.
Niet elke moderne Linux-distributie ondersteunt hetsystemd init systeem. Sommigen gebruiken Upstart of iets anders helemaal. In deze zelfstudie zullen we ons concentreren op systemd, omdat dit het meest voorkomende initiatiesysteem is. Als u deze taak wilt uitvoeren op iets dat niet wordt uitgevoerd zoals we in dit artikel behandelen, overweeg dan de handleiding van uw besturingssysteem te raadplegen voor instructies.
Opmerking: Debian-gebruikers moeten alle instanties van vervangen usr / lib / systemd / system-slaap met / Lib / systemd / system-slaap /
Een opdracht uitvoeren voordat de functie wordt onderbroken

Om een script uit te voeren voordat het wordt onderbroken, plaatst u een bash-scriptbestand in de / Usr / lib / systemd / system-slaap / directory. De scripts zelf kunnen alles doen, maar er is een bepaalde syntaxis waaraan moet worden vastgehouden. Begin met het openen van een terminalvenster. Gebruik sudo -s om een rootshell te krijgen.
Ga vervolgens naar de nano-teksteditor in de map system-sleep:
nano /usr/lib/systemd/system-sleep/pre-suspend.sh
Voeg de shebang toe aan het begin van het script. Dit toevoegen is van cruciaal belang, en zonder dit kan de tolk de code en opdrachten niet correct lezen.
#!/bin/bash/
Het volgende deel van het script is het "als". Dit zal het energiebeheersysteem vertellen dat "als" het systeem op het punt staat uit te gaan om te onderbreken, er iets zou moeten gebeuren. Plak de onderstaande code:
if [ "${1}" == "pre" ]; then sh /path/to/script/to/run.sh
Verandering sh /path/to/script/to/run.sh in het script naar alles wat u op uw Linux-pc (of server) wilt uitvoeren, net voordat het systeem wordt onderbroken voor opschorting. Houd er rekening mee dat de regel direct na "als" niet hoeft te zijn sh /path/to/script/to/run.sh. U kunt dit ook gebruiken om verschillende opdrachten uit te voeren. Zolang bash het als een commando kan herkennen, blijft het draaien.
Het laatste deel van het "before suspend" -script is het toevoegen van het "else if" -gedeelte. Dit aspect van het script hoeft niet te worden gewijzigd, omdat we ons in dit voorbeeld zorgen maken over iets voordat het systeem valt uit en niet wanneer het weer wakker wordt.
elif [ "${1}" == "post" ]; then # nothing goes here fi
Wanneer alles aan het bestand is toegevoegd, drukt u op Ctrl + O om nano te redden.
Een opdracht uitvoeren na hervatten

Het uitvoeren van een opdracht na het hervatten werkt ongeveer hetzelfdeiets uitvoeren voordat u het opschort. Het enige echte verschil is dat in plaats van een opdracht toe te voegen na het "if" -gedeelte van het script, u het belangrijkste deel van de code achter de "elif" -regel zou laten verschijnen.
Om een post-cv-script te maken, voegt u eerst de shebang toe als de eerste regel.
#!bin/bash
Voeg op de volgende regel het gedeelte "if" van het script toe.
if [ "${1}" == "pre" ]; then # nothing goes here
Met dat stukje code in het bash-script geplakt, ga je naar beneden en plak je de sectie 'anders als'.
elif [ "${1}" == "post" ]; then sh /path/to/script/to/run.sh fi
Nogmaals, het is OK om iets te schrijven onder de regel "elif". Zolang het een normale opdracht is, zal systemd en bash het uitvoeren.
Commando's uitvoeren bij opstarten en hervatten

Als u twee tegengestelde opdrachten wilt uitvoeren; eenvoordat het wordt onderbroken en één bij hervatten, is het mogelijk. Het betekent gewoon dat u het script moet aanpassen en regels moet toevoegen onder zowel de regel 'if' als de regel 'elseif'.
Begin zoals gewoonlijk met het posten van de shebang in het script voor de tolk.
#!/bin/bash
Plak vervolgens het if-gedeelte van de code.
if [ "${1}" == "pre" ]; then # replace with command
Onder if vervangt u "# vervang door opdracht" door de opdracht die u wilt uitvoeren vlak voordat het systeem uitvalt. Ga vervolgens naar het gedeelte 'elif' en doe hetzelfde.
elif [ "${1}" == "post" ]; then # replace with command fi
Sla het bestand op met Ctrl + O,
Machtigingen bijwerken en het script gebruiken
Alle benodigde opdrachten bevinden zich in het scriptbestand, maar voordat het kan worden uitgevoerd, moet u de machtigingen bijwerken. Open een terminal en krijg root met: su of sudo -s. Dan doen:
chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh
Vanaf nu moeten, wanneer u het programma onderbreekt of hervat, aangepaste opdrachten in het script worden uitgevoerd.
Opmerking: heb je vragen over systemd system-sleep? Raadpleeg de handleiding met man systemd-suspend.service.
Comments