Deamon avec systemd
Aller à la navigation
Aller à la recherche
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=, ouExecStop=.