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. ]