Systemd est une suite logicielle moderne qui fournit de nombreux composants sur un système Linux, notamment un gestionnaire de système et de service. Il est compatible avec SysV et LSB init scripts et fonctionne en remplacement de sysvinit.
Un service systemd est défini dans un fichier d’unité (une unité est une représentation d’un service et de ressources système telles que des périphériques, des sockets, des points de montage, etc.). Les fichiers d’unité de service personnalisés doivent être stockés dans le /etc/systemd/system/ répertoire et doit avoir un .service
extension. Par exemple, une coutume application de test utilisations des services /etc/systemd/system/test-app.service fichier d’unité.
Un fichier d’unité est un fichier de style ini en texte brut qui comprend généralement trois sections communes. La première section est généralement la Unité section qui contient des informations génériques sur l’unité qui ne dépendent pas du type d’unité.
La section suivante est la section de type d’unité, pour un service, c’est un Service section. Et la dernière section est la Installer section contenant des informations sur l’installation de l’unité.
Dans ce guide, nous montrerons comment créer un nouveau systemd service et gérez le service à l’aide de la commande systemctl, sous Linux.
Création d’un fichier de service Systemd personnalisé sous Linux
Pour exécuter une application, un programme ou un script en tant que service sous systemd, vous pouvez créer un nouveau service systemd comme suit. Commencez par créer le service unité fichier nommé test-app.service (n’oubliez pas de remplacer application de test avec le nom réel de votre service ou application), sous /etc/systemd/system/:
# vi /etc/systemd/system/test-app.service
La configuration suivante est utilisée pour définir un service pour exécuter un Ballon application utilisant Gunicorneun serveur HTTP Python WSGI pour UNIX.
[Unit] Description=Gunicorn daemon for serving test-app After=network.target [Service] User=root Group=root WorkingDirectory=/apps/test-app/ Environment="PATH=/apps/test-app/bin" ExecStart=/apps/test-app/bin/gunicorn --workers 9 -t 0 --bind 127.0.0.1:5001 -m 007 wsgi:app --log-level debug --access-logfile /var/log/gunicorn/test_app_access.log --error-logfile /var/log/gunicorn/test_app_error.log ExecReload=/bin/kill -s HUP $MAINPID RestartSec=5 [Install] WantedBy=multi-user.target
Décrivons brièvement chaque directive de configuration dans la configuration ci-dessus :
- Description – est utilisé pour spécifier une description du service.
- Après – définit une relation avec une seconde unité, la réseau.cible. Dans ce cas, le test-app.service est activé après la réseau.cible unité.
- Utilisateur – est utilisé pour spécifier l’utilisateur avec les autorisations duquel le service sera exécuté.
- Groupe – est utilisé pour spécifier le groupe avec les autorisations duquel le service sera exécuté.
- Directeur de travail – est utilisé pour définir le répertoire de travail des processus exécutés.
- Environnement – est utilisé pour définir des variables d’environnement pour les processus exécutés.
- ExecStart – permet de définir les commandes avec leurs arguments qui sont exécutées au démarrage de ce service.
- ExecReload – permet de définir les commandes à exécuter pour déclencher un rechargement de configuration dans le service.
- RecherchéPar – permet de créer un lien symbolique dans le
.wants/
ou.requires/
répertoire de chacune des unités listées, multi-utilisateur.cible dans ce cas, lorsque le test-app.service l’unité est activée à l’aide de la commande systemctl enable.
Vous pouvez trouver tous les paramètres de configuration de l’unité de service, bien décrits dans le Configuration de l’unité de service Documentation.
Enregistrez le fichier d’unité et fermez-le. Rechargez ensuite systemd avec ce nouveau fichier d’unité de service en exécutant :
# systemctl daemon-reload command
N’oubliez pas de toujours exécuter cette commande après avoir modifié un fichier d’unité.
Gérer le service Systemd sous Linux
Pour démarrer/activer le service, exécutez la commande systemctl comme suit :
# systemctl start test-app.service
Pour vérifier si le service est en cours d’exécution ou non, émettez la commande systemctl comme indiqué.
# systemctl status test-app.service
Pour permettre au service de démarrer au démarrage du système, utilisez le systemctl activer commande. Vous pouvez vérifier si le service a été activé en utilisant le systemctl est activé commande comme suit :
# systemctl enable test-app.service # systemctl is-enabled test-app.service
Alternativement, vous pouvez également activer et démarrer le service en même temps, comme indiqué.
# systemctl enable --now test-app.service
Pour arrêter/désactiver le service, exécutez le arrêt systemctl commande comme suit :
# systemctl stop test-app.service
Pour redémarrer le service, exécutez le redémarrage de systemctl commande comme suit :
# systemctl restart test-app.service
Vous pouvez également désactiver un service pour l’empêcher de démarrer au démarrage du système, en utilisant le sdésactiver ystemctl commande. Vous pouvez vérifier si le service a été activé en utilisant le systemctl est activé commande comme suit :
# systemctl disable test-app.service # systemctl is-disabled test-app.service
Vous pouvez également le désactiver et l’arrêter en même temps, comme indiqué.
# systemctl disable --now test-app.service
Pour plus de détails sur la gestion des services systemd et d’autres ressources, exécutez :
# man systemctl
Si vous appréciez ce que nous faisons ici sur TecMint, vous devriez considérer :
TecMint est le site communautaire à la croissance la plus rapide et le plus fiable pour tout type d’articles, de guides et de livres Linux sur le Web. Des millions de personnes visitent TecMint ! pour rechercher ou parcourir les milliers d’articles publiés accessibles GRATUITEMENT à tous.
Si vous aimez ce que vous lisez, pensez à nous acheter un café (ou 2) en signe d’appréciation.
Nous sommes reconnaissants pour votre soutien sans fin.