Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Drei überraschende Dinge, die Sie mit systemd machen können

Drei überraschende Dinge, die Sie mit systemd machen können

WBOY
WBOYnach vorne
2023-06-09 15:38:151136Durchsuche

三件可以用 systemd 做的令人惊讶的事情

Es geht nicht nur darum, Ihren Computer schneller hochfahren zu lassen.

Als systemd zum ersten Mal herauskam, gab es viele Neuigkeiten darüber, wie es die Startzeiten beschleunigen würde. Diese Funktion spricht die meisten Leute an (weniger diejenigen, die nicht neu starten), und in vielerlei Hinsicht ist das auch der Ruf, den sie auch heute noch hat. Während systemd beim parallelen Starten von Diensten während des Bootvorgangs eine Rolle spielt, leistet es noch viel mehr. Hier sind drei Dinge, von denen Sie vielleicht nicht wissen, dass systemd sie kann, die Sie aber nutzen sollten.

1. Vereinfachen Sie Linux ps

Wenn Sie jemals ​​ps​​, oder auch nur ​​top​​, dann wissen Sie, dass auf Ihrem Computer ständig Hunderte von Prozessen ausgeführt werden. Manchmal sind dies nur die Informationen, die Sie benötigen, um zu verstehen, was Ihr Computer oder seine Benutzer tun. In anderen Fällen benötigen Sie wirklich einen allgemeinen Überblick. ​ps​​,甚至只是 ​​top​​ 命令,那么你就会知道你的电脑一直都在运行数百个进程。有时,这正是你需要的信息,以便了解你的计算机或其用户在做什么。其他时候,你真正需要的是一个总体的概览。

​systemd-cgtop​​ 命令提供了一个基于控制组cgroup任务安排的计算机负载的简单视图。​​控制组​​ 对现代 Linux 很重要,基本上是容器和 Kubernetes 的底层支持结构(这也是云计算可以扩展的原因),但它们也是家庭电脑上的有用结构。例如,从 ​​systemd-cgtop​​ 的输出中,你可以看到用户进程的负载,而不是系统进程:

Control Group Proc+ %CPU MemoryInput/s Output/s
/ 1835.0 1.6G 0B 3.0M
user.slice42.8 1.1G 0B 174.7K
user.slice/user-1000.slice42.8 968.2M 0B 174.7K
system.slice 652.2 1.5G 0B 2.8M

你也可以只查看你的用户空间进程,或者查看用户空间进程和内核线程。

这绝不是对 ​​top​​ 或 ​​ps​​ 的替代,而是从一个不同的、独特的角度来观察你的系统。在运行容器时,它可能是至关重要的,因为容器使用控制组。

2、Linux 定时任务

​Cron​​ 是 Linux 的一个经典组件。当你想安排一些事情定期发生时,你会使用 Cron。它很可靠,而且相当好地集成到你的系统中。

问题是,Cron 并不了解有些计算机会被关闭。如果你有一个安排在午夜的 Cron 任务,但你每天在 23:59 关闭你的电脑,那么你的 Cron 任务就永远不会运行。Cron 没有任何工具可以检测到一夜之间错过了工作。

作为对这个问题的回答,有一个很好的 ​​Anacron​​,但它不像 Cron 那样集成的好。要让 Anacron 运行,你需要做很多设置。

第二个选择是 systemd 计时器。和 Cron 一样,它也是内置的,可以随时使用。你需要写一个单元文件,这肯定比单行的 Crontab 条目多,但也很简单。例如,这里有一个单元文件,在开机 30 分钟后运行一个假想的备份脚本,但每天只运行一次。这可以确保我的电脑得到备份,并防止它每天尝试备份超过一次。

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

当然,你也可以干预并提示运行一个任务。多亏了 ​​OnUnitActiveSec​

​systemd Der Befehl -cgtop bietet eine einfache Ansicht der Computerlast basierend auf der Aufgabenplanung der Kontrollgruppe. ​<a target="_blank" href="https://www.php.cn/link/fac7fead96dafceaf80c1daffeae82a4">​Kontrollgruppen</a>​ sind für modernes Linux sehr wichtig, im Wesentlichen die zugrunde liegende Unterstützung für Container und Kubernetes Strukturen (weshalb Cloud Computing skalierbar ist), aber auch auf Heimcomputern sind sie nützliche Strukturen. Zum Beispiel aus ​<code style="background-color: rgb(231, 243, 237); padding: 0px 3px; border-radius: 4px; overflow-wrap: break-word; text-indent: 0px;"> ​In der Ausgabe von systemd-cgtop​​ können Sie die Auslastung der Benutzerprozesse sehen, nicht der Systemprozesse: 🎜
$ podman generate systemd --new --files --name example_pod
🎜 Sie können auch nur Ihre User-Space-Prozesse oder User-Space-Prozesse und Kernel-Threads anzeigen. 🎜🎜Das ist absolut nicht wahr ​​top​​ oder ​​ps​​ statt Ihr System aus einer anderen, einzigartigen Perspektive zu betrachten. Dies kann beim Ausführen von Containern von entscheidender Bedeutung sein, da Container Kontrollgruppen verwenden. 🎜🎜2. Geplante Linux-Aufgaben🎜🎜​​Cron​​ ist eine klassische Komponente von Linux. Sie verwenden Cron, wenn Sie regelmäßig etwas planen möchten. Es ist zuverlässig und lässt sich recht gut in Ihr System integrieren. 🎜🎜Das Problem ist, dass Cron nicht versteht, dass einige Computer heruntergefahren werden. Wenn Sie einen Cron-Job für Mitternacht geplant haben, Ihren Computer aber jeden Tag um 23:59 Uhr herunterfahren, wird Ihr Cron-Job nie ausgeführt. Cron verfügt über keine Tools, um über Nacht verpasste Jobs zu erkennen. 🎜🎜Als Antwort auf diese Frage gibt es ein gutes ​​Anacron​​, aber es ist nicht so gut integriert wie Cron. Um Anacron zum Laufen zu bringen, müssen Sie viele Einstellungen vornehmen. 🎜🎜Die zweite Option sind systemgesteuerte Timer. Wie Cron ist es integriert und sofort einsatzbereit. Sie müssen eine Unit-Datei schreiben, was definitiv aufwändiger ist als ein einzeiliger Crontab-Eintrag, aber auch ziemlich einfach. Hier ist beispielsweise eine Unit-Datei, die 30 Minuten nach dem Booten, jedoch nur einmal am Tag, ein hypothetisches Backup-Skript ausführt. Dadurch wird sichergestellt, dass mein Computer gesichert wird, und verhindert, dass er mehr als einmal am Tag versucht, eine Sicherung durchzuführen. 🎜
$ systemctl --user start pod-example_pod.service
🎜 Natürlich können Sie auch eingreifen und die Ausführung einer Aufgabe veranlassen. Danke an ​​OnUnitActiveSec ​​-Direktive versucht systemd nicht, Jobs auszuführen, die Sie manuell aktivieren. 🎜

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 电子书

systemd 的内容还有很多,你可以从作者 ​​David Both​​ 的新书《​​systemd 实用指南​​》中了解基础知识,以及很多实用的技巧。

Das obige ist der detaillierte Inhalt vonDrei überraschende Dinge, die Sie mit systemd machen können. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen