Maison  >  Article  >  Tutoriel système  >  systemd : une super boîte à outils sous Linux

systemd : une super boîte à outils sous Linux

王林
王林avant
2024-02-09 17:42:20945parcourir

systemd:Linux 上的超级工具箱

systemd est un système d'initialisation moderne sous Linux. Il est responsable de la gestion du démarrage du système, de l'exécution des services, de la connexion des utilisateurs, etc. L'objectif de systemd est de fournir un cadre de gestion système rapide, flexible et évolutif. Cependant, systemd n'est pas seulement un système d'initialisation, il fournit également de nombreuses autres fonctions et outils pour vous faciliter la gestion et la surveillance de votre système Linux. Dans cet article, nous aborderons trois choses étonnantes que vous pouvez faire avec systemd :

  • Simplifiez Linux ps : utilisez la commande systemd-cgtop pour afficher la charge du système en fonction des groupes de contrôle
  • Tâches planifiées Linux : utilisez les minuteries systemd pour planifier des tâches régulièrement exécutées
  • Exécution de conteneurs Linux : gérez et surveillez les conteneurs avec Podman et systemd

Lorsque systemd est sorti pour la première fois, il y avait beaucoup de nouvelles sur la façon dont il accélérerait les temps de démarrage. Cette fonctionnalité plaît à la plupart des gens (moins à ceux qui ne redémarrent pas), donc à bien des égards, c'est la réputation qu'elle a encore aujourd'hui. Bien que systemd joue un rôle dans le démarrage des services en parallèle pendant le processus de démarrage, il fait bien plus que cela. Voici trois choses que vous ne réalisez peut-être pas que systemd peut faire, mais dont vous devriez profiter.

1. Simplifiez Linux ps

Si vous avez déjà utilisé la commande ps,甚至只是 top, vous savez que des centaines de processus sont exécutés en permanence sur votre ordinateur. Parfois, il s’agit simplement des informations dont vous avez besoin pour comprendre ce que font votre ordinateur ou ses utilisateurs. D’autres fois, ce dont vous avez vraiment besoin, c’est d’un aperçu général.

Dans le résultat de

systemd-cgtop 命令提供了一个基于控制组cgroup任务安排的计算机负载的简单视图。控制组 对现代 Linux 很重要,基本上是容器和 Kubernetes 的底层支持结构(这也是云计算可以扩展的原因),但它们也是家庭电脑上的有用结构。例如,从 systemd-cgtop, vous pouvez voir la charge du processus utilisateur, pas celle du processus système :

Control Group               Proc+   %CPU   Memory  Input/s Output/s
/                             183    5.0     1.6G       0B     3.0M
user.slice                      4    2.8     1.1G       0B   174.7K
user.slice/user-1000.slice      4    2.8   968.2M       0B   174.7K
system.slice                   65    2.2     1.5G       0B     2.8M

Vous pouvez également afficher uniquement les processus de votre espace utilisateur ou afficher les processus de l'espace utilisateur et les threads du noyau.

Ceci n'est en aucun cas un remplacement pour topps, mais plutôt une façon de regarder votre système sous un angle différent et unique. Cela peut être critique lors de l’exécution de conteneurs, car les conteneurs utilisent des groupes de contrôle.

2. Tâches planifiées Linux

Cron est un composant classique de Linux. Vous utilisez Cron lorsque vous souhaitez planifier quelque chose de manière régulière. Il est fiable et s’intègre assez bien à votre système.

Le problème est que Cron ne comprend pas que certains ordinateurs vont être éteints. Si vous avez une tâche cron prévue à minuit, mais que vous éteignez votre ordinateur à 23 h 59 tous les jours, votre tâche cron ne s'exécutera jamais. Cron ne dispose d'aucun outil pour détecter les tâches manquées du jour au lendemain.

En réponse à cette question, il y a Anacron qui est bien, mais il n'est pas aussi bien intégré que Cron. Pour faire fonctionner Anacron, vous devez effectuer de nombreuses configurations.

La deuxième option concerne les minuteries système. Comme Cron, il est intégré et prêt à l'emploi. Vous devez écrire un fichier unité, ce qui représente certainement plus de travail qu'une entrée Crontab sur une seule ligne, mais c'est aussi assez simple. Par exemple, voici un fichier unité qui exécute un script de sauvegarde hypothétique 30 minutes après le démarrage, mais seulement une fois par jour. Cela garantit que mon ordinateur est sauvegardé et l'empêche d'essayer de sauvegarder plus d'une fois par jour.

[Unit]
Description=Backup
Requires=myBackup.service
[Timer]
OnBootSec=30min
OnUnitActiveSec=1d
[Install]
WantedBy=timers.target

当然,你也可以干预并提示运行一个任务。多亏了 OnUnitActiveSec 指令,systemd 不会试图运行你手动激活的作业。

3、运行 Linux 容器

容器使启动一个复杂的服务变得非常容易。你可以在短短几分钟内运行一个 Mattermost 或 Discourse 服务器。在某些情况下,困难的部分是在你运行容器后管理和监控它们。Podman 使得管理它们变得容易,但是用什么来管理 Podman 呢?嗯,你可以使用 systemd。

Podman 有一个内置的命令来生成单元文件,这样你的容器就可以被 systemd 管理和监控:

$ podman generate systemd --new --files --name example_pod

然后你所要做的就是启动服务:

$ systemctl --user start pod-example_pod.service

和其他服务一样,systemd 确保你的容器荚在任何情况下都能运行。它记录问题,你可以用 journalctl 和其他重要的日志来查看,你也可以用 systemd-cgtop 在控制组中监控它的活动。

它不是 Kubernetes 平台,但对于一两个容器来说,你只需要在可靠和可预测的基础上提供服务,Podman 和 systemd 是一对很棒的组合。

本文介绍了三件可以用 systemd 做的令人惊讶的事情,它们可以让你更轻松地管理和监控你的 Linux 系统。systemd 的内容还有很多,你可以从作者 David Both 的新书《systemd 实用指南》中了解更多。希望本文对你有所帮助!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer