Comment exécuter des scripts et des commandes lors de la suspension et de la reprise sous Linux

La meilleure façon d’exécuter des scripts et des commandes lors de la suspension et de la reprise sous Linux avant la suspension (ou après la reprise) est d’utiliser le système init systemd. 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’acquérir beaucoup de contrôle sur son système d’exploitation Linux,

Veuillez comprendre que jouer avec le système init sur votre PC peut être dangereux si vous ne savez pas ce que vous faites. Assurez-vous de suivre les instructions de ce didacticiel aussi étroitement que possible, pour éviter tout incident éventuel.

Toutes les distributions Linux modernes ne prennent pas en charge le système systemd init. Certains utilisent upstart ou autre chose. Dans ce didacticiel, nous nous concentrerons sur systemd car il s’agit du système d’initiation le plus courant. Si vous cherchez à accomplir cette tâche sur quelque chose qui n’exécute pas ce que nous couvrons dans cet article, envisagez de consulter le manuel de votre système d’exploitation pour obtenir des instructions.

Remarque: les utilisateurs Debian doivent remplacer toutes les instances de usr / lib / systemd / system-sleep par / 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 /. Les scripts eux-mêmes peuvent tout faire, mais il y a une certaine syntaxe qui doit être respectée. Commencez par ouvrir une fenêtre de terminal. En utilisant sudo -s, obtenez un shell racine.

  Qu'est-ce que le focus stacking?

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. L’ajout de ceci est essentiel, et sans cela, l’interpréteur ne pourra pas lire correctement le code et les commandes.

#!/bin/bash/

La partie suivante du script est le «si». Cela indiquera au système de contrôle de puissance que «si» le système est sur le point de s’arrêter, quelque chose doit se produire. Collez le code ci-dessous:

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

Remplacez sh /path/to/script/to/run.sh dans le script par ce que vous souhaitez exécuter sur votre PC (ou serveur) Linux juste avant que le système ne s’arrête pour être suspendu. Gardez à l’esprit que la ligne directement après «if» 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 peut le reconnaître comme une commande, il fonctionnera.

  Comment écouter des podcasts sur votre Mac

La dernière partie du script «avant la suspension» consiste à ajouter la partie «sinon si». Cet aspect du script n’a pas besoin d’être modifié, car, dans cet exemple, nous nous inquiétons de faire quelque chose avant que le système ne tombe en panne, et non lorsqu’il se réveille.

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

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

Exécution d’une commande après la reprise

L’exécution d’une commande après la reprise fonctionne un peu comme l’exécution de quelque chose avant la suspension. La seule vraie différence est qu’au lieu d’ajouter une commande après la partie «if» du script, vous feriez que la partie la plus importante du code se produise après la ligne «elif».

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

#!bin/bash

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

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

Avec ce bout 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

Encore une fois, vous pouvez écrire quoi que ce soit sous la ligne «elif». Tant qu’il s’agit d’une opération de commande normale, systemd et bash l’exécuteront.

  Qu'est-ce qu'une escroquerie téléphonique Wangiri ou «One Ring»?

Exécution des commandes au démarrage et à la reprise

Si vous souhaitez exécuter deux commandes opposées; un avant la suspension, et un à la reprise, c’est possible. Cela signifie simplement personnaliser le script et ajouter des lignes à la fois sous la ligne «if» et sous la ligne «elseif».

Comme d’habitude, commencez par poster le shebang dans le script pour 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 tombe en panne. 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 se trouvent dans le fichier de script, mais avant de pouvoir s’exécuter, vous devrez mettre à jour les autorisations. Ouvrez un terminal et accédez à 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.