- - Comment exécuter des scripts et des commandes lors d'une suspension et d'une reprise sous Linux

Comment exécuter des scripts et des commandes lors d'une suspension et d'une reprise sous Linux

La meilleure façon d’exécuter des scripts et des commandes sursuspendre et reprendre sous Linux avant de suspendre (ou après la reprise) l’utilisation du système systemd init. Cela est dû au fait que le système init interagit directement avec le noyau et les systèmes d'alimentation. Apprendre à travailler avec cet outil permettra à tout utilisateur d’avoir beaucoup de contrôle sur son système d’exploitation Linux,

S'il vous plaît comprendre que jouer avec l'initsystème sur votre PC peut être dangereux si vous ne savez pas ce que vous faites. Veillez à suivre les instructions de ce didacticiel le plus fidèlement possible pour éviter tout incident éventuel.

Toutes les distributions Linux modernes ne supportent pas lasystemd init system. Certains utilisent upstart ou autre chose entièrement. Dans ce tutoriel, nous allons nous concentrer sur systemd car il s’agit du système d’initiation le plus courant. Si vous souhaitez accomplir cette tâche sur une tâche qui n’exécute pas ce que nous traitons dans cet article, pensez à consulter le manuel de votre système d’exploitation pour obtenir des instructions.

Note: Les utilisateurs de Debian doivent remplacer toutes les instances de usr / lib / systemd / system-sleep avec / lib / systemd / system-sleep /

Exécuter une commande avant de suspendre

Pour exécuter un script avant la suspension, placez n’importe quel fichier de script bash dans le répertoire. / usr / lib / systemd / system-sleep / annuaire. Les scripts eux-mêmes peuvent faire n'importe quoi, mais il y a une certaine syntaxe à respecter. Commencez par ouvrir une fenêtre de terminal. En utilisant sudo -s, obtenez un shell root.

Ensuite, montez l’éditeur de texte nano dans le répertoire system-sleep:

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

Ajoutez le shebang au début du script. Ajouter ceci est essentiel, et sans cela, l'interpréteur ne pourra pas lire correctement le code et les commandes.

#!/bin/bash/

La prochaine partie du script est le «si». Cela indiquera au système de contrôle de l'alimentation que «si» le système est sur le point de tomber en veille, quelque chose devrait se produire. Collez le code ci-dessous:

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

Changement sh /path/to/script/to/run.sh Dans le script, indiquez ce que vous souhaitez exécuter sur votre PC Linux (ou votre serveur) juste avant que le système ne soit suspendu. Gardez à l’esprit que la ligne directement après «si» n’a pas besoin d’être sh /path/to/script/to/run.sh. Vous pouvez également l'utiliser pour exécuter diverses commandes. Tant que bash pourra le reconnaître en tant que commande, il sera exécuté.

La dernière partie du script «before suspend» consiste à ajouter la partie «else if». Il n’est pas nécessaire de modifier cet aspect du script, car, dans cet exemple, nous craignons de faire quelque chose avant le système tombe en panne, et pas quand il se réveille.

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

Lorsque tout a été ajouté au fichier, appuyez sur Ctrl + O sauver nano.

Exécuter une commande après la reprise

L'exécution d'une commande après la reprise fonctionne beaucoup commecourir quelque chose avant de suspendre. La seule différence réelle est qu’au lieu d’ajouter une commande après la partie «if» du script, la partie la plus importante du code se produit après la ligne «elif».

Pour créer un script post-résumé, ajoutez d’abord le shebang en première ligne.

#!bin/bash

Sur la ligne suivante, ajoutez la partie «si» du script.

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

Avec ce morceau de code collé dans le script bash, descendez et collez la section "else if".

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

Une fois encore, il n’est rien d’écrire sous la ligne «elif». Tant qu'il s'agit d'une commande normale, systemd et bash l'exécutent.

Exécuter des commandes au démarrage et reprendre

Si vous souhaitez exécuter deux commandes opposées; unavant de suspendre, et un à reprendre, c'est possible. Cela signifie simplement personnaliser le script et ajouter des lignes sous la ligne "if", ainsi que la ligne "elseif".

Comme d'habitude, commencez par poster le shebang dans le script de l'interprète.

#!/bin/bash

Ensuite, collez la section if du code.

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

Sous if, remplacez «# replace with command» par la commande que vous souhaitez exécuter juste avant que le système ne s’éteigne. Ensuite, passez à la section «elif» et faites de même.

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

Enregistrez le fichier avec Ctrl + O,

Mise à jour des autorisations et utilisation du script

Toutes les commandes nécessaires sont contenues dans le fichier de script, mais avant de pouvoir être exécuté, vous devez mettre à jour les autorisations. Ouvrez un terminal et gagnez la racine avec: su ou sudo -s. Alors fais:

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

À partir de maintenant, chaque fois que vous suspendez ou reprenez, les commandes personnalisées à l'intérieur du script doivent s'exécuter.

Remarque: vous avez des questions sur systemd system-sleep? Consultez le manuel avec man systemd-suspend.service.

commentaires