三个让你惊叹的 systemd 用法

在计算机科技领域,创新不断推动着技术的进步,而 systemd 就是一个以出人意料的方式改善了 Linux 系统的工具。虽然许多人将其仅仅视为用于加快启动时间的工具,但其功能远不止于此。本文将为你揭示三个或许你未曾意识到的 systemd 用法,让你更充分地利用这一强大的工具。

1、Linux 系统监控:更直观的资源查看

无论是使用 ps 命令还是 top 命令,你可能已经注意到你的计算机同时运行着大量进程。有时候,了解每个进程的细节很重要,但有时候你只需要一个整体的概览。

systemd-cgtop 命令提供了一种基于控制组(cgroup)任务排列的简单视图,用以展示计算机的负载情况。控制组在现代 Linux 系统中扮演重要角色,它们是容器和 Kubernetes 等技术的基础支持结构,但同样也在家庭电脑上发挥作用。通过 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,但却为我们提供了一种独特的方式来观察系统状态,尤其在容器化环境中尤为有用。

2、灵活的 Linux 定时任务:systemd 计时器

Cron 是 Linux 中的经典定时任务工具,用于定期执行一些操作。然而,Cron 并不考虑到计算机可能会被关闭的情况。如果你的计划任务定在午夜执行,而你每天在 23:59 关机,那么该任务将永远不会执行。为了解决这个问题,系统中的 Anacron 是一个不错的选择,但它与 Cron 相比集成性较差,设置也较为复杂。

另一个选择是 systemd 计时器,与 Cron 类似,但更为内置且易用。虽然编写一个单元文件相比于简单的 Crontab 条目来说可能复杂一些,但操作起来仍然相对简单。下面是一个例子,展示了如何编写一个在开机 30 分钟后运行的假想备份脚本,并确保每天仅运行一次。

# 备份单元文件
[Unit]
Description=Backup
Requires=myBackup.service

[Timer]
OnBootSec=30min
OnUnitActiveSec=1d

[Install]
WantedBy=timers.target

使用 OnUnitActiveSec 指令,你甚至可以手动触发任务的运行。通过 systemd 计时器,系统能够更灵活地管理定时任务,确保它们按预期运行。

3、容器管理:systemd 与 Podman 的组合

在现代计算环境中,容器技术已经成为一种方便启动复杂服务的方式。你可以在几分钟内启动 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 平台,但对于少量容器而言,systemd 与 Podman 的组合为你提供了一个稳定、可靠的服务提供方案。

结语

systemd 是一个功能强大且多才多艺的工具,它远不仅仅是为了加快系统启动时间。从资源监控到灵活的定时任务管理,再到容器化服务的管理,systemd 在许多方面都提供了创新的解决方案。通过深入了解和充分利用 systemd,你将能够更好地管理你的系统并发掘其潜力。

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

JetBrains 宣布支持 Wayland 协议,为 Linux 开发者带来更强 IDE 体验

2023-9-3 21:44:13

指数词

远程管理Linux系统:通过SSH执行命令

2023-9-3 21:51:59

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索