Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Services Linux ====== * [[https://doc.ubuntu-fr.org/creer_un_service_avec_systemd]] * [[https://www.it-connect.fr/optimiser-et-securiser-le-processus-systemd-de-demarrage-des-machines-linux/]] * https://systemd-by-example.com/ ==== Interagir avec les services ==== ''systemctl'' affiche réellement tous les services, à la différence de ''service''. <code bash> sudo systemctl list-units sudo systemctl status service_name.service sudo systemctl restart service_name.service </code> ==== Créer un service ==== <file service /etc/systemd/system/gunicorn.service> [Unit] Description=Launch gunicorn to run web plateform [Service] Type=simple User=root ExecStart=/home/user/start_gunicorn.sh Restart=on-failure [Install] WantedBy=multi-user.target </file> L'exécutable de ''ExecStart'' doit être un chemin absolu (''python3'' ne suffit pas !). Enregistrer le service: <code bash> sudo systemctl enable gunicorn.service </code> Voir le statut du service: <code bash> sudo service gunicorn status </code> Redémarrer le service: <code bash> sudo service gunicorn restart </code> Ce genre de service n'apparaît pas dans le résultat de la commande ''service --status-all'', car cette commande ne renvoie que les services qui ont un script ''init.d''. Après modification d'un service, exécuter la commande: <code bash> sudo systemctl daemon-reload </code> Et redémarrer le service. ==== Logs des services ==== * [[https://www.tecmint.com/manage-systemd-logs-using-journalctl/|Manage Log Messages Under Systemd Using Journalctl]] [[https://unix.stackexchange.com/questions/225401/how-to-see-full-log-from-systemctl-status-service|Source]] <code bash> journalctl -u service-name.service </code> ==== Dépendances ==== Le service B a besoin du service A. Le démarrage du service B provoque donc le démarrage du service A. Dans le fichier du service B: <code service> [Unit] Description=... Wants=service-a.service </code> ==== Timers ==== Système équivalents aux crons. * [[https://ungeek.fr/systemd-timer/]] Tout se trouve dans ''/etc/systemd/system/''. Lister tous les timers: <code bash> systemctl list-timers </code> Arrêter un timer: <code bash> systemctl stop certbot.timer </code> Désactiver un timer (ne se relancera pas aux prochains redémarrages): <code bash> systemctl disable certbot.timer </code> ==== Surcharger un service ==== <code bash> sudo systemctl edit <service> </code> Là, réécrire le fichier de service, en ne laissant que les valeurs modifiées (il faut qu'il y ait les ''[Service]''). ==== Modifier le timeout de démarrage d'un service ==== * [[https://sleeplessbeastie.eu/2020/02/29/how-to-prevent-systemd-service-start-operation-from-timing-out/|Source]] Par défaut, un service doit démarrer en moins de 90 secondes. Il est possible de changer cette valeur : <code> [Service] TimeoutStartSec=180 </code> <code bash> sudo systemctl show elasticsearch | grep ^Timeout </code> linux/service.txt Dernière modification : 2025/05/25 19:30de phsw