Chaque fois que je veux démarrer un serveur CentOS au travail et mettre dans une base de données ou un appareil et l'exécuter Par exemple, s'il s'agissait de PostgreSQL
systemctl enable postgresql
systemctl start postgresql
Et si c'est un démon Docker
systemctl enable docker
systemctl start docker
Je fais. J'ai utilisé cette commande "systemctl" sans y penser, J'ai l'occasion d'enquêter correctement, je vais donc le résumer ici.
Le processus qui s'exécute sur le système d'exploitation peut être grossièrement divisé.
Un processus qui démarre en tapant une commande par vous-même,
Processus qui fonctionnent tout le temps pendant que le système d'exploitation est en place
Il y a. Le premier est, par exemple,
python hello.py
./start.sh
make install
S'applique à. Puisque l'utilisateur le démarre, il est appelé processus utilisateur </ b>.
Vous pouvez vérifier le processus en cours en exécutant la commande ps
.
Ce dernier est un processus lancé par le système lorsque le système d'exploitation démarre et s'exécute en arrière-plan, ce qui est appelé un démon </ b>. Les plus connus incluent des bases de données telles que postgresql et mysql, des proxy inverses tels que httpd et nginx, et d'autres appareils tels que jenkins et github.
systemd
systemd est un processus qui démarre ces démons et gère le processus au démarrage du système d'exploitation.
La commande systemctl
accède à ce systemd pour démarrer / arrêter le démon, le surveiller, et ainsi de suite.
systemctl enable postgresql.service #Activer le serveur PostgreSQL
systemctl restart docker #Redémarrez le démon Docker
systemctl stop nginx #Arrêtez Nginx
systemctl status sshd #Vérifiez l'état du démon SSH
Alors, que fait Systemd quand on lui demande de démarrer un processus démon?
Il est décrit dans un fichier appelé " Unit File </ b>" sous / etc / systemd / system /
.
Par exemple, le contenu du fichier d'unité PostgreSQL est le suivant.
Source: [https://www.postgresql.jp/document/11/html/server-start.html]
[Unit]
Description=PostgreSQL database server
Documentation=man:postgres(1)
[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0
(Omission)
Le contenu du fichier d'unité est écrit comme un fichier de configuration Windows (.ini).
La commande réellement exécutée est la partie ʻExecStart de la section
[Service] `.
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
En d'autres termes, Systemd exécute la commande / usr / local / pgsql / bin / postgres -D / usr / local / pgsql / data
au démarrage du système d'exploitation.
Au fait, comme il est dit ʻUser = postgres au-dessus, cette commande est exécutée en tant qu'utilisateur
postgres`.
D'autres incluent ʻAfter, qui spécifie le démon qui doit être démarré avant cette unité, et ʻEnvironment
, qui spécifie une variable d'environnement dédiée au démon.
L'histoire ici est détaillée ci-dessous.
[https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files:embed:cite]
Vous pouvez également afficher une liste de fichiers unitaires avec systemctl list-unit-files
.
Cette fois, j'ai résumé systemd, qui jouait en fait un rôle important sous Linux. De nos jours, il est courant d'utiliser Docker ou Kubernetes pour mettre à l'échelle et surveiller par conteneur ou pod pour publier le service, mais lors de l'installation des appareils achetés, etc., en fonction de l'élément. Vous pouvez être obligé d'utiliser un tel systemd. Si quelque chose ne va pas là-bas, c'est un problème si vous ne pouvez pas y faire face, il est donc important de le vérifier correctement.
Recommended Posts