« Deamon avec systemd » : différence entre les versions

De knowledge
Aller à la navigation Aller à la recherche
 
Ligne 1 : Ligne 1 :
= Créer un service systemd personnalisé =
= Créer un service systemd personnalisé =


Cette page décrit comment créer un service systemd pour exécuter un script ou une application en tant que démon, au démarrage du système.
Des lors qu'on écrit soit même un process serveur pour réaliser un service on aimerait que celui-ci soit lancé automatiquement au boot du serveur. On aimerait aussi pouvoir l'arrêter le démarrer avoir une idée de son état, voir ses logs....
 
C'est systemd qui va nous y aider (même si il y a d'autres solutions)


== 1. Préparer le script de lancement ==
== 1. Préparer le script de lancement ==

Version actuelle datée du 26 septembre 2025 à 22:53

Créer un service systemd personnalisé

Des lors qu'on écrit soit même un process serveur pour réaliser un service on aimerait que celui-ci soit lancé automatiquement au boot du serveur. On aimerait aussi pouvoir l'arrêter le démarrer avoir une idée de son état, voir ses logs....

C'est systemd qui va nous y aider (même si il y a d'autres solutions)

1. Préparer le script de lancement

Créer un script exécutable contenant les commandes à lancer :

#!/bin/bash
# Exemple : activer un environnement virtuel et lancer une application
source /home/utilisateur/chemin/env/bin/activate # SI c'est du code python avec un virtual env
exec nom_de_la_commande --option

Rendre le script exécutable :

chmod +x /home/utilisateur/chemin/start.sh

2. Créer le fichier de service systemd

Créer un fichier dans /etc/systemd/system/ :

[Unit]
Description=Nom du service
After=network.target

[Service]
Type=simple
User=utilisateur
WorkingDirectory=/home/utilisateur/chemin
ExecStart=/home/utilisateur/chemin/start.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

Adapter les chemins et le nom d’utilisateur selon le contexte.

3. Activer et démarrer le service

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable nomduservice.service
sudo systemctl start nomduservice.service

4. Vérifier le statut et les logs

systemctl status nomduservice.service
journalctl -u nomduservice.service

Notes

  • Le service sera lancé automatiquement au démarrage.
  • Le script peut contenir n’importe quelle commande : serveur web, tâche de fond, tunnel, etc.
  • Pour les services complexes, envisager Type=exec, Environment=, ou ExecStop=.