Comment créer un service systemd dans Linux

Comment créer un service systemd dans Linux

Systemd est une suite logicielle moderne qui fournit de nombreux composants sur un système Linux, y compris un système de système et de service. Il est compatible avec Sysv et LSB scripts init et fonctionne en remplacement de sysvinit.

Un service SystemD est défini dans un fichier unitaire (une unité est une représentation d'un service et des ressources système telles que les appareils, les prises, les 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 apparition Utilisation du service / etc / systemd / système / test-app.service fichier unitaire.

[Vous pourriez également aimer: pourquoi «init» devait être remplacé par «systemd» dans Linux]

Un fichier unitaire est un fichier de style ini-IN-Text qui comprend généralement trois sections communes. La première section est généralement le Unité Section qui transporte des informations génériques sur l'unité qui ne dépend 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 qui transporte des informations d'installation pour l'unité.

Dans ce guide, nous montrerons comment créer un nouveau systemd Service et gérer le service à l'aide de la commande SystemCTL, dans Linux.

Création d'un fichier de service SystemD personnalisé dans Linux

Pour exécuter une application ou 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é dossier nommé apparition.service (N'oubliez pas de remplacer apparition avec le nom réel de votre service ou de votre 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 en utilisant Gunicorn, un serveur Python WSGI HTTP pour Unix.

[Unité] Description = démon de Gunicorn pour servir le test-appte après = réseau.Target [service] user = root groupe = root workingDirectory = / apps / test-app / environnement = "path = / apps / test-app / bin" execstart = / apps / test-app / bin / gunicorn --workers 9 - T 0 - Bind 127.0.0.1: 5001 -M 007 WSGI: application --bog de niveau-log --access-log / var / log / gunicorn / test_app_access.Log --error-logfile / var / log / gunicorn / test_app_error.journal execreload = / bin / kill -s hup $ mainpid restartsec = 5 [install] wantedby = multi-utilisateur.cible 

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 deuxième unité, la réseau.cible. Dans ce cas, le apparition.service est activé après le réseau.cible unité.
  • Utilisateur - est utilisé pour spécifier l'utilisateur avec les autorisations duquel le service s'exécutera.
  • Groupe - est utilisé pour spécifier le groupe avec les autorisations duquel le service fonctionnera.
  • Directeur de travail - est utilisé pour définir le répertoire de travail pour les processus exécutés.
  • Environnement - est utilisé pour définir des variables d'environnement pour les processus exécutés.
  • Exercice - est utilisé pour définir les commandes avec leurs arguments qui sont exécutés lorsque ce service est démarré.
  • Exaspérage - est utilisé pour 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 .veut/ ou .a besoin/ Répertoire de chacune des unités répertoriées (s), multi-utilisateurs.cible Dans ce cas, quand le apparition.service L'unité est activée en utilisant le SystemCTL Activer Commande.

Vous pouvez trouver tous les paramètres de configuration de l'unité de service, bien décrits dans la documentation de configuration de l'unité de service.

Enregistrez le fichier unitaire et fermez-le. Recharger ensuite Systemd avec ce nouveau fichier d'unité de service en exécutant:

# Commande SystemCTL Daemon-Reload 

N'oubliez pas d'exécuter toujours cette commande après avoir modifié un fichier unitaire.

Gérer le service Systemd dans 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 
Vérifiez l'état du 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 IS-ENABLE Commande comme suit:

# SystemCTL Activer le test-app.Service # SystemCTl Test compatible Test-App.service 
Activer le service pour démarrer au démarrage

Alternativement, vous pouvez également activer et démarrer le service en même temps que celle indiquée.

# SystemCTL Active --now Test-App.service 

Pour arrêter / désactiver le service, exécutez le SystemCTl Stop Commande comme suit:

# SystemCTL Stop Test-App.service 

Pour redémarrer le service, exécutez le SystemCTL Redémarrer Commande comme suit:

# systemctl redémarrer le 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 systemctl désactiver commande. Vous pouvez vérifier si le service a été activé en utilisant le SystemCTL IS-ENABLE Commande comme suit:

# SystemCTL Désactiver le test-app.Service # SystemCTL est un test handicapé.service 

Alternativement, vous pouvez le désactiver et l'arrêter en même temps que celle indiquée.

# 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