GNU/Linux >> Tutoriels Linux >  >> Linux

10 commandes systemd pratiques :une référence

Mauvais systemd a eu sa part de détracteurs, mais il semble être là pour rester pour les administrateurs Linux, alors autant s'y habituer. Ce systemd pratique La référence de commande vous aidera à garder votre santé mentale lorsque vous essayez d'effectuer des tâches administratives normales. Donc, jusqu'à ce que nous obtenions quelque chose de plus utilisable, acceptable et souhaitable que systemd , veuillez profiter de cette liste de dix commandes pratiques pour votre commodité. Ces commandes ne sont pas classées par ordre particulier d'importance ou de pertinence.

Liste des fichiers d'unité

Depuis le systemd page de manuel :un fichier d'unité est un fichier de style ini en texte brut qui code des informations sur un service, un socket, un périphérique, un point de montage, un point de montage automatique, un fichier ou une partition d'échange, une cible de démarrage, un fichier surveillé chemin système, une minuterie contrôlée et supervisée par systemd , une tranche de gestion des ressources ou un groupe de processus créés en externe.

$ systemctl list-unit-files

UNIT FILE                                     STATE   
proc-sys-fs-binfmt_misc.automount             static  
dev-hugepages.mount                           static 
dev-mqueue.mount                              static 
proc-sys-fs-binfmt_misc.mount                 static  
sys-fs-fuse-connections.mount                 static  
sys-kernel-config.mount                       static  
sys-kernel-debug.mount                        static  
tmp.mount                                     disabled
brandbot.path                                 disabled
systemd-ask-password-console.path             static  
systemd-ask-password-plymouth.path            static  
systemd-ask-password-wall.path                static  
session-1.scope                               static  
arp-ethers.service                            disabled
auditd.service                                enabled 
[email protected]                               enabled 

<many more entries>

Bien sûr, vous pouvez toujours diriger vers grep pour voir uniquement les services activés.

$ systemctl list-unit-files |grep enabled

auditd.service                                enabled 
[email protected]                               enabled 
crond.service                                 enabled 
dbus-org.fedoraproject.FirewallD1.service     enabled 
dbus-org.freedesktop.nm-dispatcher.service    enabled 
firewalld.service                             enabled 
[email protected]                                enabled 
irqbalance.service                            enabled 
kdump.service                                 enabled 
lvm2-monitor.service                          enabled 

<many more entries>

Ces fichiers unitaires, situés sous /lib/systemd/system , sont à peu près équivalents aux anciens scripts d'initialisation situés sous /etc/rc.d/init.d . En fait, si vous ou votre installation logicielle créez des scripts d'initialisation, un systemd correspondant Le fichier d'unité est mappé pour vous. Une explication supplémentaire est donnée par /etc/rc.d/init.d/README :

You are looking for the traditional init scripts in /etc/rc.d/init.d,
and they are gone?

Here's an explanation on what's going on:

You are running a systemd-based OS where traditional init scripts have
been replaced by native systemd services files. Service files provide
very similar functionality to init scripts. To make use of service
files simply invoke "systemctl", which will output a list of all
currently running services (and other units). Use "systemctl
list-unit-files" to get a listing of all known unit files, including
stopped, disabled and masked ones. Use "systemctl start
foobar.service" and "systemctl stop foobar.service" to start or stop a
service, respectively. For further details, please refer to
systemctl(1).

Note that traditional init scripts continue to function on a systemd
system. An init script /etc/rc.d/init.d/foobar is implicitly mapped
into a service unit foobar.service during system initialization.

Thank you!

Further reading:
        man:systemctl(1)
        man:systemd(1)
        http://0pointer.de/blog/projects/systemd-for-admins-3.html
        http://www.freedesktop.org/wiki/Software/systemd/Incompatibilities

Comme vous pouvez le voir, init.d a été supprimé en faveur de systemd . Il est là pour rester jusqu'à ce que quelqu'un trouve quelque chose de mieux. (J'espère que quelqu'un travaille rapidement sur un remplaçant.)

Liste des unités

La liste des unités actives affiche de nombreuses informations utiles sur vos services chargés et actifs. La sortie est trop détaillée pour être démontrée ici, mais essayez la commande suivante sur votre système pour voir ce que je veux dire.

$ systemctl list-units

Les champs de statut sont agréables à voir, mais le champ de description est le plus utile pour moi. Il fournit des informations détaillées sur vos services.

Démarrer un service

Pour obtenir un nom de service, listez vos fichiers d'unité et grep pour celui que vous voulez. Utilisez ensuite le systemctl commande pour démarrer votre service. J'utilise firewalld comme exemple.

$ sudo systemctl start firewalld

Étonnamment, ou peut-être pas si surprenant, il n'y a aucune réponse au démarrage, à l'arrêt ou au redémarrage d'un service. Pour vérifier l'état d'un service, vous devez utiliser la commande status.

Vérifier l'état d'un service

Pour vérifier l'état d'un service, utilisez le systemctl status service-name commande.

$ sudo systemctl status sshd
[sudo] password for khess: 
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-04-29 07:44:57 CDT; 2h 17min ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1055 (sshd)
   CGroup: /system.slice/sshd.service
           └─1055 /usr/sbin/sshd -D

Apr 29 07:44:57 centos7 systemd[1]: Starting OpenSSH server daemon...
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on 0.0.0.0 port 22.
Apr 29 07:44:57 centos7 sshd[1055]: Server listening on :: port 22.
Apr 29 07:44:57 centos7 systemd[1]: Started OpenSSH server daemon.
Apr 29 07:51:35 centos7 sshd[1396]: Accepted password for khess from 192.168.1.85 port 56769 ssh2

J'aime le statut de systemd à cause des détails donnés. Par exemple, dans la liste ci-dessus, vous voyez le chemin d'accès complet au fichier d'unité, l'état, la commande de démarrage et les derniers changements d'état.

[ Voulez-vous essayer Red Hat Enterprise Linux ? Télécharge le maintenant gratuitement. ]

Arrêter un service

Arrêter un service en cours d'exécution est aussi simple que d'en démarrer un.

$ sudo systemctl stop firewalld

Encore une fois, vous ne voyez aucune réponse après l'émission de cette commande. Émettez un statut de service pour vérifier votre réussite ou votre échec.

Redémarrer un service

Si vous souhaitez arrêter et démarrer un service sans émettre deux commandes (les administrateurs système sont des paresseux, après tout), lancez un redémarrage.

$ sudo systemctl restart firewalld

Aucune réponse du système ne s'affiche.

Redémarrage, arrêt et arrêt du système

Ces trois tâches sont des tâches typiques que les administrateurs système doivent connaître et sont maintenant sous le contrôle de systemd .

Redémarrer

Il existe plusieurs façons de redémarrer vos systèmes, mais l'ancienne veille, le redémarrage, est en fait un lien vers le systemctl commande. Je suppose que puisque cela fonctionne, il relie le systemctl commande avec le commutateur de redémarrage ajouté comme suit :

$ sudo systemctl reboot

Le même lien s'applique aux commandes d'arrêt et d'arrêt.

Arrêt et arrêt

Peu importe comment vous le faisiez avec halt -p ou shutdown now ou quoi que ce soit, la commande universelle est maintenant :

$ sudo systemctl poweroff

Cette commande éteint le système.

Configurer les services pour qu'ils s'exécutent au démarrage

Vous êtes habitué au chkconfig pour permettre à vos services de s'exécuter au démarrage et sous un niveau d'exécution particulier. Eh bien, ces jours aussi sont révolus, et ils ont été usurpés par l'omniprésent systemctl commande.

Permettre à un service de s'exécuter au démarrage

Pour configurer un service pour qu'il démarre au démarrage, exécutez la commande suivante. J'utilise firewalld comme exemple de service.

$ sudo systemctl enable firewalld

Désactiver l'exécution d'un service au démarrage

Pour empêcher tout service de démarrer au démarrage, lancez :

$ sudo systemctl disable firewalld

Le firewalld le service ne démarrera pas au démarrage.

Récapitulez

Ce bref mais pratique systemd/systemctl le guide de référence devrait soulager une partie de la douleur liée à la gestion de systemd . C'est la théorie, du moins. Et, comme vous le verrez souvent dans mes articles ou m'entendrez le dire à voix haute, "Tout fonctionne sur papier". N'oubliez pas de me dire sur Twitter ce que vous pensez de mes articles et de suggérer de nouveaux sujets.

[ Cours en ligne gratuit :Présentation technique de Red Hat Enterprise Linux. ]


Linux
  1. Comment créer un service Systemd sous Linux

  2. Ajouter un nouveau service à Linux systemd

  3. Linux - Emplacement du script Fsck ?

  4. Le service Systemd ne démarre pas Nodejs ?

  5. Comment empaqueter un service Systemd ?

Gérer le démarrage à l'aide de systemd

Commandes Systemctl pour gérer le service Systemd

Utiliser les fonctionnalités de systemd pour sécuriser les services

Gestion des cgroups avec systemd

rediriger les journaux du service systemd vers un fichier

activation de socket systemd vs xinetd