GNU/Linux >> Tutoriels Linux >  >> Linux

Premiers pas avec systemctl

La gestion des services est une responsabilité clé pour les administrateurs système. Il ne fait aucun doute que la transition entre l'ancienne méthode SysV (utilisant le service et chkconfig commandes) et le nouveau systemd - commandes basées sur (telles que systemctl ) était controversé. En fait, de nombreux administrateurs système ont encore des sentiments très forts dans un sens ou dans l'autre.

La réalité est que de nombreuses distributions, y compris Red Hat Enterprise Linux (RHEL), ont commencé à gérer les services avec systemd . Par conséquent, vous et moi devons savoir comment travailler avec le systemctl commande de gestion.

Je ne suis pas le genre d'auteur/formateur/administrateur qui suppose que tout le monde est avancé. Dans cet esprit, je vais adresser cet article aux personnes qui ont besoin d'une explication fondamentale et simple sur comment et quand utiliser le plus courant systemctl sous-commandes. A la fin, je fournis également une super astuce pour afficher rapidement tous les systemctl sous-commandes.

Remarque :La page de manuel systemctl fait référence au deuxième mot de la chaîne en tant que "commande", ce qui semble quelque peu déroutant. Je vais me référer à systemctl lui-même en tant que commande , puis la chaîne qui le suit en tant que sous-commande . L'argument est le nom du service et occupe la troisième position dans la syntaxe.

Voici un exemple de syntaxe :

systemctl subcommand argument
# systemctl status sshd

Je vais montrer comment et quand utiliser systemctl . La plupart de mes exemples utilisent le commun sshd services.

[ Les lecteurs ont également apprécié : Comment j'ai appris à ne plus m'inquiéter et à aimer systemd ]

État des services

Le meilleur endroit pour commencer est de comprendre la fonctionnalité actuelle du service. Je vais commencer par l'approche la plus simple, l'utilisation du status sous-commande :

# systemctl status sshd

Bien sûr, l'idée est que vous venez de vous asseoir sur un serveur Linux inconnu et que vous devez connaître l'état actuel du sshd un service. Notez que de nombreuses autres informations sont fournies, y compris un synopsis du service, d'où il a été chargé, son état, l'ID de processus (PID) et les modifications récentes.

Le systemctl status La commande est également utile lors du dépannage. Lorsque je dépanne une configuration, je vérifie presque immédiatement son état en utilisant systemctl . Pourquoi s'embêter avec les pare-feux, SELinux et les fichiers de configuration si le service ne fonctionne même pas ?

Donc, vous savez maintenant comment vérifier l'état des services tels que SSH. Comment manipulez-vous ce statut ?

Démarrage et arrêt des services

Lorsque vous modifiez un fichier de configuration pour un service en cours d'exécution, vous devez soit redémarrer ou recharger le service. Cela oblige le service à relire le fichier et donc à implémenter les modifications. Autrefois, vous utilisiez le service commande, comme dans les exemples ci-dessous :

# service sshd restart

Services sous systemd sont gérés via le systemctl commande. Pour redémarrer le service SSH avec systemctl , saisissez :

# systemctl restart sshd

Personnellement, je trouve cette syntaxe un peu plus facile. Il se lit presque comme une phrase :"Systemctl, veuillez redémarrer sshd."

La syntaxe est similaire si vous souhaitez arrêter ou démarrer un service :

# systemctl stop sshd

# systemctl start sshd

Les services qui refusent de s'arrêter gracieusement peuvent être tués en utilisant systemctl , aussi. Par exemple, pour tuer le sshd service, saisissez :

# systemctl kill sshd

Les services de rechargement sont un peu différents. Le reload la sous-commande ne fait que relire le fichier de configuration par le service, tandis que le restart la sous-commande met fin à toutes les connexions en cours et relit le fichier de configuration.

Par exemple, si vous tapez systemctl restart sshd , toutes les connexions SSH en cours sont abandonnées. Si vous le rechargez, cependant, les connexions existantes sont conservées. Dans les deux cas, le fichier de configuration est relu et les éventuelles modifications sont implémentées.

Le rechargement entraîne moins de temps d'arrêt, mais tous les services ne le prennent pas en charge.

Le start , stop , restart, et reload les sous-commandes n'affectent que le runtime actuel.

Activer et désactiver les services

De nombreux administrateurs qui découvrent Linux sont confus quant à la différence entre start /stop et enable /disable . J'ai déjà parlé de start , stop , et restart dans la section précédente. Start et stop sont utilisés pour modifier l'état actuel du service. Cependant, si le serveur redémarre, l'état du service reviendra au paramètre de démarrage par défaut. En d'autres termes, si j'arrête le sshd service puis redémarrez mon serveur, le processus de démarrage examinera le fichier de configuration et démarrera ou non sshd , selon ce qui est spécifié. Si j'arrête le service, puis redémarre, et que le fichier de configuration indique de démarrer le service au démarrage, il fonctionnera à nouveau.

Auparavant, vous utilisiez le chkconfig commande pour définir le paramètre de démarrage du service pour chaque niveau d'exécution. Voici un exemple :

# chkconfig --level 35 sshd on

Cette commande active sshd pour démarrer dans les niveaux d'exécution 3 et 5.

Avec systemctl , la configuration du paramètre de démarrage par défaut est le travail de enable et disable sous-commandes. La syntaxe est la même qu'avec le start , stop , et restart sous-commandes. Par exemple, pour que SSH démarre au démarrage du serveur, saisissez :

# systemctl enable sshd

De même, pour configurer SSH pas pour démarrer pendant le démarrage, tapez :

# systemctl disable sshd

La configuration de la configuration de démarrage par défaut des services est simple, tout comme le démarrage et l'arrêt des services. Cependant, il semble y avoir une certaine confusion quant à l'utilisation des deux ensemble.

Utilisez démarrer et activer ensemble

Certains trouvent étrange que l'activation d'un service ne le démarre pas. Par exemple, si vous venez de télécharger un nouveau programme et que vous souhaitez le lancer afin de tester ses fonctionnalités et que vous souhaitez le configurer pour qu'il démarre au démarrage du serveur, vous devez saisir deux commandes :

# systemctl start sshd

# systemctl enable sshd

La désactivation d'un service se produit de la même manière. Tapez systemctl disable sshd pour empêcher le lancement de SSH au démarrage du serveur. Cependant, si SSH est en cours d'exécution dans l'environnement d'exécution actuel, il reste actif, même s'il est désactivé. Vous devez stop SSH pour le désactiver dans le runtime actuel.

Par exemple, pour à la fois arrêter SSH et l'empêcher de démarrer au démarrage du système, saisissez :

# systemctl stop sshd

# systemctl disable sshd

N'oubliez pas de vérifier l'status du service chaque fois que vous n'êtes pas sûr en saisissant :

# systemctl status sshd

Vous pouvez vérifier si un service est configuré pour démarrer automatiquement en utilisant un autre systemctl sous-commande :is-enabled . Par exemple, pour afficher si SSH est activé, saisissez :

# systemctl is-enabled sshd

Beaucoup de sous-commandes - l'astuce

J'ai couvert pas mal de systemctl sous-commandes, y compris start , stop , restart , enable , disable , status , et d'autres. C'est beaucoup à retenir! C'est là que votre vieil ami, la complétion par onglets, entre en jeu. Essayez la technique suivante sur votre système :Tapez systemctl puis ajoutez un seul espace. Appuyez sur l'onglet clé deux fois, et bash affiche tous les systemctl disponibles sous-commandes ! Je pense que peu d'administrateurs système profitent suffisamment de cette astuce pour compléter les tabulations.

[ Vous voulez tester vos compétences d'administrateur système ? Faites une évaluation des compétences aujourd'hui. ] 

Récapitulez

Comme vous pouvez le voir, la gestion des services via le systemctl la commande n'est vraiment pas si difficile. Je le trouve plus simple et plus logique que l'ancien service et chkconfig commandes, personnellement. Il est également pratique de n'avoir qu'une seule commande pour gérer les services au lieu de deux.

Voici les points clés à retenir :

  • Utilisez start/stop/restart pour gérer la durée d'exécution actuelle.
  • Utilisez start/stop/restart/reload après avoir modifié les fichiers de configuration.
  • Utilisez activer/désactiver pour gérer l'action de démarrage par défaut.
  • Utilisez l'état très tôt dans le processus de dépannage.

Enfin, vous n'avez pas besoin de mémoriser tous les systemctl disponibles sous-commandes. Entrez simplement le systemctl commande et faites-la suivre d'un espace, puis appuyez sur Tab à deux reprises. La fonction de saisie automatique intégrée de Bash s'occupe du reste !

Les administrateurs système se retrouvent régulièrement à manipuler des services, et j'espère que vous êtes un peu plus à l'aise avec le moment d'utiliser le plus courant systemctl sous-commandes.


Linux
  1. Gérer plusieurs instances de service avec systemctl

  2. Premiers pas avec Zsh

  3. Démarrer avec ls

  4. Premiers pas avec Samba pour l'interopérabilité

  5. Premiers pas avec PostgreSQL sous Linux

Premiers pas avec le système d'exploitation Linux

Premiers pas avec GitHub

Premiers pas avec le gestionnaire de paquets Nix

Premiers pas avec cPanel

Premiers pas avec SiteApps

Centos 7 :Prise en main