Le système d'initialisation systemd fait désormais partie de presque toutes les distributions Linux. En tant qu'administrateur ou développeur, vous créez des services que systemd peut gérer. Par exemple, si vous souhaitez lancer des services au démarrage ou si vous souhaitez les contrôler manuellement, cela peut être fait via un fichier de service personnalisé.
Dans ce didacticiel, je vais expliquer comment créer un fichier de service systemd sous Linux.
Qu'est-ce qu'un fichier de service
Avant d'aller plus loin, comprenons ce qu'est un fichier de service systemd et comment il est créé sous Linux.
Un fichier de service systemd contient des instructions définies pour que systemd gère le service. Il contient généralement trois sections :
- Unité
- Service
- Installer
Le Unité La section contient des informations de base sur le service, telles qu'une brève description, des pages de documentation et un chemin d'accès aux dépendances. Le Installer La section est facultative, mais elle gère généralement l'état du système dans lequel le service doit être activé.
Le Service La section est normalement prise en sandwich entre les sections Unité et Installation. Il contient principalement le type de service et le chemin des exécutables qui sont essentiellement des commandes à exécuter lors de l'appel du service par systemd.
Voici à quoi ressemble une structure de fichiers de service typique.
[ Unité ]
Directive1 = instruction
Directive2 = instruction
…
[ Service ]
Directive1 = instruction
Directive2 = instruction
…
[ Installer ]
Directive1 = instruction
Directive2 = instruction
…
Ici, les directives sont des paramètres qui prennent leur entrée respective. Par exemple, le Description La directive prend une chaîne du nom du service. D'une manière similaire, ExécuterDébut prend en compte le chemin complet de l'exécutable.
Un fichier de service typique de ssh.service est donné ci-dessous.
Comment créer un fichier de service
Pour créer un service systemd, il est nécessaire de comprendre les directives clés. Dans ce guide, je couvrirai les directives essentielles qui peuvent vous aider à créer un fichier de service entièrement fonctionnel.
La création d'un fichier de service implique plusieurs étapes, commençons par créer le fichier de script.
Note: Pour continuer avec la méthode mentionnée ci-dessous, vous devez disposer des privilèges root.
1. Création d'un script
La première étape implique la création du code qui sera exécuté lorsque le service commencera à fonctionner. Pour ce tutoriel, je crée un script bash qui stockera la disponibilité du système Linux et l'utilisation de la mémoire.
Créons un script dans le répertoire courant avec le nom de monscript.sh en utilisant l'éditeur nano.
sudo nano monscript.shMaintenant, ajoutez le script ci-dessous dans le fichier et enregistrez-le en appuyant sur ctrl+x et puis et .
#!/bin/bashécho '>>Voici la disponibilité de votre système<<' > maison / lui-même / monfichier.txt
disponibilité >> maison / lui-même / monfichier.txt
écho '>>Voici l'utilisation de la mémoire de votre système<<' >> / maison / lui-même / monfichier.txt
gratuit -m >> maison / lui-même / monfichier.txt
dormir 60
Le script contient quelques chaînes d'écho et disponibilité et gratuit commandes.
Le disponibilité La commande sous Linux est utilisée pour imprimer la durée de fonctionnement d'un système et le nombre d'utilisateurs connectés avec une charge système moyenne des dernières 1, 5 et 15 minutes.
Le gratuit La commande est utilisée pour imprimer l'utilisation de la mémoire du système, tandis que la commande -m L'indicateur est utilisé pour imprimer la sortie dans Mo .
Pour enregistrer des informations dans un fichier texte, nous utilisons des opérateurs spéciaux appelés opérateurs de redirection. Le > L’opérateur est utilisé pour insérer du texte dans le fichier texte mentionné. Toutefois, si le fichier n'existe pas déjà, il sera créé. Tandis que le >> L’opérateur est utilisé pour ajouter le texte dans le fichier. Le dormir La commande est utilisée pour maintenir l’activité du service pendant une durée minimale d’une minute.
Maintenant, rendez le script exécutable en accordant les autorisations nécessaires.
sudo chmod +x monscript.shLe script a maintenant l'autorisation d'exécution, passons à la section suivante.
Note: Pour que le fichier de service soit exempt d'erreurs, utilisez le chemin absolu du fichier dans le script bash.
2. Création d'un fichier .service
Ensuite, créez un fichier de service avec le .service extension. Le fichier de service doit être créé dans le /etc/systemd/système annuaire. Tout d’abord, accédez à ce répertoire à l’aide du CD commande.
CD / etc. / système / systèmeVous pouvez créer le fichier de service dans n’importe quel répertoire, puis déplacer ultérieurement ce fichier vers ce répertoire.
Je crée un fichier de service avec monservice.service nom.
sudo nano monservice.serviceMaintenant, ajoutez les lignes suivantes au fichier.
[ Unité ]Description =Mon service
[ Service ]
Taper =simple
ExécuterDébut = / poubelle / frapper / maison / lui-même / script.sh
Redémarrage =en cas d'échec
[ Installer ]
RecherchéPar = multi-utilisateur.cible
Noter que [Unité], [Service], et [Installer] sont sensible aux majuscules et minuscules . Le fichier de service ne fonctionnera pas si l'un d'entre eux est mentionné de manière incorrecte, comme [UNIT] ou [SERVICE].
Le nom du service est spécifié comme Mon service dans le Description directive de la [Unité] section.
Le Taper du service est simple dans le [Service] section, qui est le type par défaut. Fourchette , un tir , notifier , bus , et inactif sont quelques-uns des autres types.
Si vous souhaitez rendre le service spécifique à l'utilisateur, alors le Utilisateur La directive peut également être utilisée avec le nom d'utilisateur de l'utilisateur. L’utilisation de cette directive rendra dépendante l’autorisation de l’utilisateur du service.
Tandis que le ExécuterDébut La directive contient le chemin complet de l’exécutable. Dans l'exemple ci-dessus, le fichier script monscript.sh est stocké dans le /accueil/sam/ annuaire. Cette directive gère en fait ce qu'il faut exécuter lorsqu'un service est invoqué par systemd. Si le chemin complet de la commande n'est pas spécifié, elle sera automatiquement résolue pour corriger les chemins absolus tels que /usr/local/bin , /usr/bin/, et /poubelle . Il est tout à fait possible d'utiliser le nom de l'exécutable tant qu'il se trouve dans les répertoires de commandes standard. Dans le cas contraire, mentionnez le chemin absolu. Notez que plusieurs commandes peuvent également être utilisées, séparées par un point-virgule (;).
Le [Installer] la section est facultative ; cependant, il indique comment le service est activé. Le RecherchéPar La directive prend les fichiers cibles au niveau de l'exécution comme paramètres. Divers fichiers cibles indiquaient différents niveaux d'exécution du système, tels que éteindre , sauvetage , multi-utilisateur , graphique , et redémarrer .
Le multi-utilisateur.cible signifie que le service sera activé lorsque le système est dans un état permettant d'autoriser des sessions non graphiques multi-utilisateurs.
3. Activation du service
Pour activer le service, commencez par recharger les configurations systemd en utilisant systèmectl utilitaire.
sudo rechargement du démon systemctlEnsuite, activez à nouveau le service en utilisant systèmectl commande avec activer .
sudo systèmectl activer monservice.servicePour vérifier, vérifiez l'état du service à l'aide du statut systemctl commande.
Le service s'exécute avec succès.
Maintenant, lisons le fichier texte monfichier.txt le service créé dans le /maison annuaire.
Comment créer un fichier de service Systemd pour un utilisateur normal
La procédure de création du fichier de service pour un utilisateur normal est similaire à la méthode de création d'un fichier de service par l'administrateur. Cependant, le répertoire dans lequel enregistrer le fichier de service pour les utilisateurs normaux est différent. Les utilisateurs normaux doivent placer leurs fichiers de service dans le ~/.config/systemd/user . Ce répertoire doit être créé à l'aide du mkdir commande.
mkdir ~ / .config / système / utilisateurPour activer le service par un utilisateur normal -utilisateur la commande est insérée avec systèmectl au lieu de sudo .
systèmectl --utilisateur rechargement du démonsystèmectl --utilisateur activer SERVICE-NAME.service
systèmectl --utilisateur statut SERVICE-NAME.service
Le -utilisateur L’option est utilisée pour gérer les fichiers du service systemd de l’utilisateur.
Comment supprimer le fichier de service
Pour supprimer le fichier de service, le service doit d’abord être arrêté.
sudo systemctl arrête SERVICE-NAME.serviceVérifiez l'état en utilisant statut systemctl commande pour savoir si le service est arrêté ou non. Supprimez ensuite le fichier de service à l'aide du rm commande.
sudo rm / etc. / système / système / SERVICE-NAME.serviceMaintenant, rechargez le système configuration.
sudo rechargement du démon systemctlConclusion
Le service systemd personnalisé est avantageux dans divers scénarios. Dans ce guide, nous avons appris comment créer un fichier de service systemd personnalisé pour un administrateur système et comment les utilisateurs normaux peuvent créer un fichier de service. De plus, nous voyons également la procédure de suppression du fichier de service.