TranslateProject/translated/tech/20240103 How to Check if Your Linux System Uses systemd.md
2024-01-08 08:38:20 +08:00

4.5 KiB
Raw Blame History

如何检查你的 Linux 系统是否使用 systemd

每个主流 Linux 发行版(包括 Ubuntu、Fedora、openSUSE 和 Arch默认都使用 systemd。

但是有许多非 systemd 发行版,例如使用轻量级 runit 来获得更好性能的 Void Linux 或主要使用 sysvinit 的 Devuan。

当你尝试遵循某些教程或文档并且其中包含特定于 systemd 或某些其他 init 服务的命令时,就会出现问题。

这时,你必须检查你的 Linux 系统使用的是 systemd 还是其他系统。

一种方法是检查 PID 为 1 的进程毕竟init 系统是 Linux 系统上运行的第一个进程)。


     ps 1

但它的输出可能会产生误导,因为它经常显示 /sbin/init,这只是实际 init 进程的软链接。

如果你跟随该符号链接,就可以获取 init 系统信息。有两种方法:

  • 使用 stat 命令
  • 使用 readlink 命令

那么让我们从第一个开始。

📋

这些方法在 6 个 init 系统中进行了测试: Systemd、OpenRC、SysVnint、Busybox、runit 和 s6。

方法 1使用 stat 命令检查 systemd 是否正在使用

以下是如何使用 stat 命令来了解你正在使用的 init 系统:


    stat /sbin/init

如果你使用的是 systemd 支持的发行版,那么它将显示以下输出:

但是,如果你使用 systemd 之外的其他任何东西,它将显示 init 名称,除非你使用 SysVnit它只会显示 init 而不是 sysvnit

SysVnit only displays "init" instead of sysvnit

与之前的方法不同,当你使用 readlink 命令时,它只会打印 init 系统的名称。

因此,如果你想知道你是否正在使用 Systemd只需使用以下命令


    readlink /sbin/init

如果你使用 OpenRC init service,那么它将显示以下输出:

但如果你使用 SysVnit那么它会显示以下输出

我为你写的小“脚本”

另一种方法是检查 /run/systemd/system 目录是否存在。

好吧,最简单的找出方法是在终端中使用 if-else bash 命令,它将检查你是否正在运行由 systemd 驱动的发行版:


    if [ -d /run/systemd/system ]; then echo "System is running systemd"; else echo "System is not running systemd"; fi

有关 systemd 的更多信息

当你知道你正在使用 systemd 支持的发行版,你就可以使用 systemctl 命令管理服务

想要从头开始创建一个 systemd 服务 你也可以那样做:

我希望本指南对你有所帮助。


via: https://itsfoss.com/check-if-systemd/

作者:Sagar Sharma 选题:lujun9972 译者:geekpi 校对:校对者ID

本文由 LCTT 原创编译,Linux中国 荣誉推出