Parfois, on peut avoir besoin d’exécuter un script ou une commande au démarrage de Linux, mais les lancer automatiquement, surtout au démarrage, n’est pas intuitif sous Linux.
Dans ce tutoriel, je vous donne 4 méthodes pour parvenir à ajouter un script ou commande au démarrage de Linux.
Notez pour les utilisateurs Ubuntu qui souhaitez plutôt exécuter un script à l’ouverture de session Ubuntu, suivez ce tutoriel : Ubuntu : ajouter une application au démarrage
Table des matières
Comment lancer un script ou commande au démarrage de Linux
Par cron
Cron, le gestionnaire de tâches de Linux, permet d’exécuter très facilement une commande ou script au démarrage de Linux.
C’est la méthode la plus simple et universelle à toutes les distributions Linux.
Voici comment faire :
- Editez les cron avec la commande crontab -e
- Ajoutez ensuite la ligne suivante :
@reboot /chemin/vers/script
- Le script s’exécutera au démarrage de votre ordinateur
Avec rc.local
Cette méthode rc.local très ancienne était disponible sur toutes les distributions.
Il s’agit d’un script qui était automatiquement exécuté au démarrage de Linux.
L’utilisateur peut alors ajouter une entrée pour ajouter ses propres commandes.
Malheureusement, avec l’arrivé de systemD, ce script a été supprimé sur beaucoup de distributions Linux.
Vérifiez que le fichier /etc/rc.local existe, si oui, ajoutez simplement votre script pour qu’il s’exécute au lancement de Linux :
echo "/chemin/script/script.sh" >> /etc/rc.local
Avec init.d
Comme pour la solution précédente, le dossier /etc/init.d contient les exécutables du cycle de vie des services gérés par le système. Nous pouvons également ajouter le nôtre en créant un script monservice conforme à LSB qui démarre notre service :
sudo vim /etc/init.d/monservice
Voici un exemple de contenu, modifiez les commentaires et le chemin du script à exécuter au démarrage de Linux :
#!/bin/bash ### BEGIN INIT INFO # Provides: MonService # Required-Start: $all # Required-Stop: # Default-Start: 5 # Default-Stop: 6 # Short-Description: Description du service ### END INIT INFO /chemin/script/script-au-demarrage.sh
Puis il faut activer le service au démarrage de Linux.
Pour activer le service sur les distributions à base Debian (Ubuntu, Linux Mint, etc), on utilise update-rc.d :
sudo chmod +x /etc/init.d/monservice
sudo update-rc.d monservice defaults
Du côté des distributions Linux à base Redhat comme Fedora, RHL, il faudra utiliser la commande chkconfig :
sudo chmod +x /etc/init.d/monservice
chkconfig --add monservice
La commande chkconfig n’étant pas disponible sur les systèmes Debian, update-rc.d peut être utilisé comme alternative :
Par systemd
Une autre solution pour placer une commande ou script au démarrage de Linux est de créer un service systemd.
Cela peut en outre permettre de faire tourner un daemon.
Nous devons créer un descripteur de service, appelé fichier d’unité, dans /etc/systemd/system :
[Unit] Description=Service systemd au démarrage Linux [Service] Type=simple ExecStart=/bin/bash /chemin/script/reboot_message.sh [Install] WantedBy=multi-user.target
Le fichier est organisé en différentes sections :
- Unit – contient des métadonnées générales, comme une description lisible par l’homme
- Service – décrit le processus et le comportement de démonisation, ainsi que la commande pour démarrer le service
- Install – permet au service de s’exécuter au démarrage en utilisant le dossier spécifié dans WantedBy pour gérer les dépendances
Ensuite, nous devons définir les permissions du fichier à 644 et activer notre service à l’aide de systemctl :
chmod 644 /etc/systemd/system/reboot_message.service
systemctl enable reboot_message.service
Plus de détails :
Liens
- Dual-boot Windows et Linux : changer/supprimer et ordre des entrées du démarrage
- Comment Linux démarre sur un PC UEFI : la séquence et étapes complètes
- 5 façons de démarrer Linux en mode récupération et dépannage (rescue)
- Ubuntu : ajouter une application au démarrage
- Qu’est-ce qu’un chargeur de démarrage (Boot Loader)