- - Come eseguire script e comandi su sospensione e ripresa su Linux

Come eseguire script e comandi su sospensione e ripresa su Linux

Il modo migliore per eseguire script e comandisospendere e riprendere su Linux prima di sospendere (o dopo riprendere) è usare il sistema systemd init. Ciò è dovuto al fatto che il sistema init interagisce direttamente con il kernel e i sistemi di alimentazione. Imparare a lavorare con questo strumento consentirà a qualsiasi utente di ottenere molto controllo sul proprio sistema operativo Linux,

Per favore, capisci che si scherza con l'initil sistema sul tuo PC può essere pericoloso se non sai cosa stai facendo. Assicurati di seguire le istruzioni in questo tutorial il più vicino possibile, per evitare possibili incidenti.

Non tutte le moderne distribuzioni Linux supportanosystemd init system. Alcuni usano upstart o qualcos'altro interamente. In questo tutorial, ci concentreremo su systemd in quanto è il sistema di avvio più comune. Se stai cercando di eseguire questa attività su qualcosa che non esegue ciò che tratteremo in questo articolo, considera di consultare il manuale del tuo sistema operativo per istruzioni.

Nota: gli utenti Debian dovrebbero sostituire tutte le istanze di usr / lib / systemd / system-sonno con / Lib / systemd / system-sonno /

Esecuzione di un comando prima della sospensione

Per eseguire uno script prima di sospenderlo, posizionare qualsiasi file di script bash nel file / Usr / lib / systemd / system-sonno / directory. Gli script stessi possono fare qualsiasi cosa, ma c'è una certa sintassi che deve essere rispettata. Inizia aprendo una finestra terminale. Usando sudo -s, ottieni una shell di root.

Quindi, nell'editor di testo nano all'interno della directory di sistema:

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

Aggiungi lo shebang all'inizio dello script. L'aggiunta di questo è fondamentale e senza di esso l'interprete non sarà in grado di leggere correttamente il codice e i comandi.

#!/bin/bash/

La parte successiva dello script è il "se". Questo dirà al sistema di controllo dell'alimentazione che "se" il sistema sta per spegnersi per la sospensione, dovrebbe succedere qualcosa. Incolla il codice qui sotto:

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

Modificare sh /path/to/script/to/run.sh nello script a qualunque cosa tu voglia eseguire sul tuo PC (o server) Linux proprio prima che il sistema si interrompa per la sospensione. Tieni presente che non è necessario che la riga subito dopo "if" sh /path/to/script/to/run.sh. Puoi anche usarlo per eseguire vari comandi. Finché bash può riconoscerlo come comando, verrà eseguito.

L'ultima parte dello script "prima di sospendere" è aggiungere la parte "else if". Questo aspetto della sceneggiatura non ha bisogno di essere modificato, poiché, in questo esempio, siamo preoccupati di fare qualcosa prima il sistema si arresta e non quando si risveglia.

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

Quando tutto è stato aggiunto al file, premere Ctrl + O per salvare nano.

Esecuzione di un comando dopo il ripristino

L'esecuzione di un comando dopo il resume funziona in modo molto simileeseguire qualcosa prima di sospendere. L'unica vera differenza è invece di aggiungere un comando dopo la parte "if" dello script, faresti che la parte più importante del codice si verifichi dopo la riga "elif".

Per creare uno script post-curriculum, aggiungi prima lo shebang come prima riga.

#!bin/bash

Nella riga successiva, aggiungi la parte "if" dello script.

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

Con quel pezzetto di codice incollato nello script bash, scorri verso il basso e incolla la sezione "else if".

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

Ancora una volta, è OK scrivere qualsiasi cosa sotto la riga "elif". Finché è una normale operazione di comando systemd e bash lo eseguirà.

Esecuzione dei comandi all'avvio e al ripristino

Se desideri eseguire due comandi opposti; unoprima di sospendere, e uno a riprendere, è possibile. Significa solo personalizzare lo script e aggiungere righe sia nella riga "if", sia nella riga "elseif".

Come al solito, inizia pubblicando lo shebang nella sceneggiatura per l'interprete.

#!/bin/bash

Successivamente, incolla la sezione if del codice.

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

Sotto if, sostituisci "# sostituisci con comando" con qualunque comando desideri eseguire subito prima che il sistema si spenga. Quindi, passa alla sezione "elif" e fai lo stesso.

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

Salva il file con Ctrl + O,

Aggiornamento delle autorizzazioni e utilizzo dello script

Tutti i comandi necessari si trovano all'interno del file di script, ma prima che possa essere eseguito, dovrai aggiornare le autorizzazioni. Apri un terminale e guadagna root con: su o sudo -s. Quindi fa:

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

Da ora in poi, ogni volta che sospendi o riprendi, i comandi personalizzati all'interno dello script dovrebbero essere eseguiti.

Nota: hai domande su systemd system-sleep? Consultare il manuale con man systemd-suspend.service.

Commenti