Linux 系统管理员可以使用 systemd 做 3 件令人惊讶的事情Linux 系统管理员可以使用 systemd 做 3 件令人惊讶的事情Linux 系统管理员可以使用 systemd 做 3 件令人惊讶的事情Linux 系统管理员可以使用 systemd 做 3 件令人惊讶的事情
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

Linux 系统管理员可以使用 systemd 做 3 件令人惊讶的事情

发表 admin at 2025年2月28日
类别
  • 未分类
标签

它不仅仅是为了让您的计算机启动更快。下载我们面向 Linux 系统管理员的新 systemd 电子书,了解更多提示。

当它刚推出时,有很多关于 systemd 及其加速启动时间的能力的报道。该功能具有普遍的吸引力(对于那些不重新启动的人来说不太重要),因此在很多方面,这就是它今天仍然享有的声誉。虽然 systemd 确实可以在启动过程中并行启动服务,但它的作用远不止于此。以下是您可能没有意识到 systemd 可以做但应该利用的三件事。从我们新的可下载电子书systemd 实用指南中获取更多提示。

1. 简化Linux ps

如果您曾经使用过 ps 甚至只是 top 命令,那么您就知道您的计算机在任何给定时刻都在运行数百个进程。有时,这正是您需要的信息,以便了解您的计算机或其用户在做什么。其他时候,您真正需要的只是一个总体概述。

systemd-cgtop 命令根据已安排的 cgroup(控制组)任务提供计算机负载的简单视图。控制组对于现代 Linux 非常重要,本质上是容器和 Kubernetes 下的支持结构(这反过来也是云以这种方式扩展的原因),而且它们也是家庭 PC 上有用的结构。例如,从 systemd-cgtop 的输出中,您可以看到用户进程的负载而不是系统进程的负载:

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

您还可以仅查看用户空间进程,或仅查看用户空间进程和内核线程。

无论如何,这都不是 top 或 ps 的替代品,但它是从不同且独特的角度观察您的系统的附加视图。这在运行容器时至关重要,因为容器使用 cgroup。

2.Linux 定时任务

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

问题是,cron 不明白某些计算机会关闭。如果您计划在午夜执行 cronjob,但您每天 23:59 关闭计算机,则您的 cronjob 永远不会运行。 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 不会尝试运行您手动激活的作业。

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 确保您的 pod 无论如何都能运行。它会记录问题,您可以使用 journalctl 查看这些问题以及其他基本日志,并且您可以使用 systemd-cgtop 监控其在 cgroup 中的活动。

它不是 Kubernetes 平台,但对于您只想以可靠且可预测的方式提供的一两个容器来说,Podman 和 systemd 是令人惊叹的组合。

下载 systemd 电子书

systemd 还有很多内容,您可以从作者 David Both 的新免费systemd 实用指南中学习基础知识以及许多有用且实用的技巧。

©2015-2025 Norria support@alaica.com