[tuto][linux][novice] Comment lancer un script ou commande au démarrage
Publié : 10 décembre 2023, 16:17
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 :
Le script s’exécutera au démarrage de l'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 :
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 :
Voici un exemple de contenu, modifiez les commentaires et le chemin du script à exécuter au démarrage de Linux :
Autre exemple avec les fonctions start et stop :
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 :
Du côté des distributions Linux à base Redhat comme Fedora, RHL, il faudra utiliser la commande chkconfig :
Pour relancer un daemon ou service, vous pouvez passer par le script, par exemple :
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 :
Le fichier est organisé en différentes sections :
Source : https://www.malekal.com/linux-executer- ... demarrage/
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 :
Code : Tout sélectionner
@reboot /chemin/vers/script.sh
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 :
Code : Tout sélectionner
echo "/chemin/vers/script.sh" >> /etc/rc.local
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 :
Code : Tout sélectionner
nano /etc/init.d/monservice
Code : Tout sélectionner
#!/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/vers/script.sh
Code : Tout sélectionner
#! /bin/bash
### BEGIN INIT INFO
# Provides: foo
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: foo service
# Description: Run Foo service
### END INIT INFO
# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting Foo..."
sudo -u foo-user bash -c 'cd /path/to/scripts/ && ./start-foo.sh'
;;
stop)
echo "Stopping Foo..."
sudo -u foo-user bash -c 'cd /path/to/scripts/ && ./stop-foo.sh'
sleep 2
;;
*)
echo "Usage: /etc/init.d/foo {start|stop}"
exit 1
;;
esac
exit 0
Pour activer le service sur les distributions à base Debian (Ubuntu, Linux Mint, etc), on utilise update-rc.d :
Code : Tout sélectionner
chmod +x /etc/init.d/monservice
update-rc.d monservice defaults
Code : Tout sélectionner
chmod +x /etc/init.d/monservice
chkconfig --add monservice
Code : Tout sélectionner
/etc/init.d/monservice start
/etc/init.d/monservice stop
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 :
Code : Tout sélectionner
nano /etc/systemd/system/monservice.service
Code : Tout sélectionner
[Unit]
Description=Service systemd au démarrage Linux
[Service]
Type=simple
ExecStart=/bin/bash /chemin/vers/script.sh
[Install]
WantedBy=multi-user.target
- 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
Code : Tout sélectionner
chmod 644 /etc/systemd/system/monservice.service
systemctl enable monservice.service