2024-01-08 08:38:20 +08:00
|
|
|
|
[#]: 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"
|
2024-01-17 08:10:31 +08:00
|
|
|
|
[#]: reviewer: "wxy"
|
|
|
|
|
[#]: publisher: "wxy"
|
|
|
|
|
[#]: url: "https://linux.cn/article-16563-1.html"
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
如何检查你的 Linux 系统是否使用 systemd
|
|
|
|
|
======
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
![][0]
|
|
|
|
|
|
|
|
|
|
> 不知道在使用哪个初始化系统?以下是方法。
|
|
|
|
|
|
2024-01-08 08:38:20 +08:00
|
|
|
|
每个主流 Linux 发行版(包括 Ubuntu、Fedora、openSUSE 和 Arch)默认都使用 systemd。
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
但是有 [许多非 systemd 发行版][1],例如使用轻量级 runit 来获得更好性能的 Void Linux 或主要使用 sysvinit 的 Devuan。
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
当你尝试遵循某些教程或文档并且其中包含特定于 systemd 或某些其他初始化服务的命令时,就会出现问题。
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
这时,你必须检查你的 Linux 系统使用的是 systemd 还是其他系统。
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
一种方法是检查 PID 为 1 的进程(毕竟,初始化系统是 Linux 系统上运行的第一个进程)。
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
````
|
2024-01-17 08:10:31 +08:00
|
|
|
|
ps 1
|
2024-01-08 08:38:20 +08:00
|
|
|
|
````
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
但它的输出可能会产生误导,因为它经常显示 `/sbin/init`,这只是实际的初始化进程的软链接。
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
如果你 [跟随该符号链接][2],就可以获取初始化系统信息。有两种方法:
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
* 使用 `stat` 命令
|
|
|
|
|
* 使用 `readlink` 命令
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
那么让我们从第一个开始。
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
> 📋 这些方法在 6 个初始化系统中进行了测试:Systemd、OpenRC、SysVinit、Busybox、runit 和 s6。
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
### 方法 1:使用 stat 命令检查 systemd 是否正在使用
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
以下是如何使用 `stat` 命令来了解你正在使用的初始化系统:
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
```
|
2024-01-17 08:10:31 +08:00
|
|
|
|
stat /sbin/init
|
2024-01-08 08:38:20 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
如果你使用的是 systemd 支持的发行版,那么它将显示以下输出:
|
|
|
|
|
|
|
|
|
|
![][3]
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
但是,如果你使用 systemd 之外的其他任何东西,它将显示初始化系统的名称,但是如果你使用的是 SysVinit,它只会显示 `init` 而不是 `sysvinit`:
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
![SysVinit only displays "init" instead of sysvinit][4]
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
### 方法 2:使用 readlink 命令检查初始化系统
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
与之前的方法不同,当你使用 `readlink` 命令时,它只会打印初始化系统的名称。
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
因此,如果你想知道你是否正在使用 Systemd,只需使用以下命令:
|
|
|
|
|
|
|
|
|
|
```
|
2024-01-17 08:10:31 +08:00
|
|
|
|
readlink /sbin/init
|
2024-01-08 08:38:20 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
![][5]
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
如果你使用 [OpenRC 初始化访问][6],那么它将显示以下输出:
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
![][7]
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
但如果你使用 SysVinit,那么它会显示以下输出:
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
![][8]
|
|
|
|
|
|
|
|
|
|
### 我为你写的小“脚本”
|
|
|
|
|
|
|
|
|
|
另一种方法是检查 `/run/systemd/system` 目录是否存在。
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
好吧,最简单的找出方法是在终端中 [使用 if-else bash 命令][9],它将检查你是否正在运行由 systemd 驱动的发行版:
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
```
|
2024-01-17 08:10:31 +08:00
|
|
|
|
if [ -d /run/systemd/system ]; then echo "System is running systemd"; else echo "System is not running systemd"; fi
|
2024-01-08 08:38:20 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
![][10]
|
|
|
|
|
|
|
|
|
|
### 有关 systemd 的更多信息
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
当你知道你正在使用 systemd 支持的发行版,你就可以 [使用 systemctl 命令管理服务][11]。
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
当然你也可以从头开始 [创建一个 systemd 服务][13]。
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
我希望本指南对你有所帮助。
|
|
|
|
|
|
2024-01-17 08:10:31 +08:00
|
|
|
|
*(题图:DA/02d49f79-0ec4-4e49-ae72-e3d46877dfa6)*
|
|
|
|
|
|
2024-01-08 08:38:20 +08:00
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
via: https://itsfoss.com/check-if-systemd/
|
|
|
|
|
|
|
|
|
|
作者:[Sagar Sharma][a]
|
|
|
|
|
选题:[lujun9972][b]
|
|
|
|
|
译者:[geekpi](https://github.com/geekpi)
|
2024-01-17 08:10:31 +08:00
|
|
|
|
校对:[wxy](https://github.com/wxy)
|
2024-01-08 08:38:20 +08:00
|
|
|
|
|
|
|
|
|
本文由 [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/
|
2024-01-17 08:10:31 +08:00
|
|
|
|
[0]: https://img.linux.net.cn/data/attachment/album/202401/17/080808gtpgc9rvxxifjx7m.jpg
|