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

136 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[#]: subject: "How to Check if Your Linux System Uses systemd"
[#]: via: "https://itsfoss.com/check-if-systemd/"
[#]: author: "Sagar Sharma https://itsfoss.com/author/sagar/"
[#]: collector: "lujun9972/lctt-scripts-1700446145"
[#]: translator: "geekpi"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
如何检查你的 Linux 系统是否使用 systemd
======
每个主流 Linux 发行版(包括 Ubuntu、Fedora、openSUSE 和 Arch默认都使用 systemd。
但是有[许多非 systemd 发行版][1],例如使用轻量级 runit 来获得更好性能的 Void Linux 或主要使用 sysvinit 的 Devuan。
当你尝试遵循某些教程或文档并且其中包含特定于 systemd 或某些其他 init 服务的命令时,就会出现问题。
这时,你必须检查你的 Linux 系统使用的是 systemd 还是其他系统。
一种方法是检查 PID 为 1 的进程毕竟init 系统是 Linux 系统上运行的第一个进程)。
````
ps 1
````
但它的输出可能会产生误导,因为它经常显示 `/sbin/init`,这只是实际 init 进程的软链接。
如果你[跟随该符号链接][2],就可以获取 init 系统信息。有两种方法:
* 使用 stat 命令
* 使用 readlink 命令
那么让我们从第一个开始。
📋
这些方法在 6 个 init 系统中进行了测试: Systemd、OpenRC、SysVnint、Busybox、runit 和 s6。
### 方法 1使用 stat 命令检查 systemd 是否正在使用
以下是如何使用 stat 命令来了解你正在使用的 init 系统:
```
stat /sbin/init
```
如果你使用的是 systemd 支持的发行版,那么它将显示以下输出:
![][3]
但是,如果你使用 systemd 之外的其他任何东西,它将显示 init 名称,除非你使用 SysVnit它只会显示 `init` 而不是 `sysvnit`
![SysVnit only displays "init" instead of sysvnit][4]
### 方法 2使用 readlink 命令检查 init 系统
与之前的方法不同,当你使用 readlink 命令时,它只会打印 init 系统的名称。
因此,如果你想知道你是否正在使用 Systemd只需使用以下命令
```
readlink /sbin/init
```
![][5]
如果你使用 [OpenRC init service][6],那么它将显示以下输出:
![][7]
但如果你使用 SysVnit那么它会显示以下输出
![][8]
### 我为你写的小“脚本”
另一种方法是检查 `/run/systemd/system` 目录是否存在。
好吧,最简单的找出方法是在终端中[使用 if-else bash 命令][9],它将检查你是否正在运行由 systemd 驱动的发行版:
```
if [ -d /run/systemd/system ]; then echo "System is running systemd"; else echo "System is not running systemd"; fi
```
![][10]
### 有关 systemd 的更多信息
当你知道你正在使用 systemd 支持的发行版,你就可以[使用 systemctl 命令管理服务][11]
![][12]
想要从头开始[创建一个 systemd 服务][13] 你也可以那样做:
![][12]
我希望本指南对你有所帮助。
--------------------------------------------------------------------------------
via: https://itsfoss.com/check-if-systemd/
作者:[Sagar Sharma][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/sagar/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/systemd-free-distros/
[2]: https://linuxhandbook.com/follow-symbolic-link/
[3]: https://itsfoss.com/content/images/2023/12/Use-the-stat-command-to-find-if-you-are-using-systemd-or-not.png
[4]: https://itsfoss.com/content/images/2023/12/Check-if-you-are-using-SysVnit-in-Linux-or-not.png
[5]: https://itsfoss.com/content/images/2023/12/Use-the-readlink-command-to-find-if-you-are-using-systemd-or-not-something-else.png
[6]: https://wiki.gentoo.org/wiki/OpenRC/openrc-init
[7]: https://itsfoss.com/content/images/2023/12/find-if-you-are-using-openrc-as-init-system.png
[8]: https://itsfoss.com/content/images/2023/12/How-to-find-out-if-you-are-using-SysVnit-as-init-system-in-Linux.png
[9]: https://itsfoss.com/bash-if-else/
[10]: https://itsfoss.com/content/images/2023/12/A-simple-if-else-statement-to-know-if-you-are-using-systemd-distro-or-not.png
[11]: https://linuxhandbook.com/systemctl-commands/
[12]: https://linuxhandbook.com/content/images/size/w256h256/2021/08/Linux-Handbook-New-Logo.png
[13]: https://linuxhandbook.com/create-systemd-services/