Comment exécuter automatiquement des commandes/scripts lors du redémarrage ou du démarrage
Je suis toujours fasciné par ce qui se passe dans les coulisses lorsque je démarre un système Linux et que je me connecte. En appuyant sur le bouton d’alimentation d’un système nu ou en démarrant une machine virtuelle, vous mettez en mouvement une série d’événements qui mènent à un système entièrement fonctionnel, parfois en moins d’une minute. Il en est de même lorsque vous vous déconnectez et/ou éteignez le système.
Ce qui rend cela plus intéressant et amusant, c’est le fait que vous pouvez faire exécuter certaines actions au système d’exploitation lorsqu’il démarre et lorsque vous vous connectez ou vous déconnectez.
Dans cet article indépendant de la distribution, nous discuterons des méthodes traditionnelles pour atteindre ces objectifs sous Linux.
Remarque : Nous supposerons l’utilisation de Bash comme shell principal pour les événements de connexion et de déconnexion. S’il vous arrive d’en utiliser une autre, certaines de ces méthodes peuvent fonctionner ou non. En cas de doute, référez-vous à la documentation de votre shell.
Exécution de scripts Linux lors du redémarrage ou du démarrage
Il existe deux méthodes traditionnelles pour exécuter une commande ou exécuter des scripts au démarrage :
Méthode #1 - Utiliser un Job cron
Outre le format habituel (minute/heure/jour du mois/mois/jour de la semaine) qui est largement utilisé pour indiquer un horaire, le planificateur cron permet également l’utilisation de @reboot. Cette directive, suivie du chemin absolu vers le script, le fera s’exécuter lorsque la machine démarre.
Cependant, il y a deux mises en garde à cette approche :
- a) le démon cron doit être en cours d’exécution (ce qui est le cas dans des circonstances normales), et
- b) le script ou le fichier crontab doit inclure les variables d’environnement (le cas échéant) qui seront nécessaires (reportez-vous à ce thread StackOverflow pour plus de détails).
Méthode #2 - Utilisez /etc/rc.d/rc.local
Cette méthode est valable même pour les distributions basées sur systemd. Pour que cette méthode fonctionne, vous devez accorder les autorisations d’exécution à /etc/rc.d/rc.local comme suit :
# chmod +x /etc/rc.d/rc.local
et ajoutez votre script en bas du fichier.
L’image suivante montre comment exécuter deux exemples de scripts (/home/gacanepa/script1.sh et /home/gacanepa/script2.sh) à l’aide d’une tâche cron et de rc.local, respectivement, et leurs résultats respectifs.
#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="linux-console.net"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt
Gardez à l’esprit que les deux scripts doivent disposer d’autorisations d’exécution au préalable :
$ chmod +x /home/gacanepa/script1.sh
chmod +x /home/gacanepa/script2.sh
Exécution de scripts Linux lors de l’ouverture de session et de la déconnexion
Pour exécuter un script lors de l’ouverture de session ou de la déconnexion, utilisez respectivement ~.bash_profile et ~.bash_logout. Très probablement, vous devrez créer ce dernier fichier manuellement. Il suffit de déposer une ligne appelant votre script au bas de chaque fichier de la même manière qu’auparavant et vous êtes prêt à partir.
Résumé
Dans cet article, nous avons expliqué comment exécuter un script au redémarrage, à la connexion et à la déconnexion. Si vous pensez à d’autres méthodes que nous aurions pu inclure ici, n’hésitez pas à utiliser le formulaire de commentaire ci-dessous pour les signaler. Nous nous réjouissons d’avoir de vos nouvelles !
