---
author: Sagar Sharma
category: 技术
comments_data:
- date: '2024-01-19 13:46:33'
  message: 垃圾systemd
  postip: 111.60.23.15
  username: 来自111.60.23.15的 Firefox 121.0|GNU/Linux 用户
count:
  commentnum: 1
  favtimes: 0
  likes: 0
  sharetimes: 0
  viewnum: 1726
date: '2024-01-17 08:08:33'
editorchoice: false
excerpt: 不知道在使用哪个初始化系统？以下是方法。
fromurl: https://itsfoss.com/check-if-systemd/
id: 16563
islctt: true
largepic: /images/p/202401/17/080808gtpgc9rvxxifjx7m.jpg
permalink: /article-16563-1.html
pic: /images/p/202401/17/080808gtpgc9rvxxifjx7m.jpg.thumb.jpg
related: []
reviewer: wxy
selector: lujun9972
summary: 不知道在使用哪个初始化系统？以下是方法。
tags:
- 初始化
- systemd
thumb: false
title: 如何检查你的 Linux 系统是否使用 systemd
titlepic: true
translator: geekpi
updated: '2024-01-17 08:08:33'
---

![](/images/p/202401/17/080808gtpgc9rvxxifjx7m.jpg)



> 
> 不知道在使用哪个初始化系统？以下是方法。
> 
> 
> 


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


但是有 [许多非 systemd 发行版](https://itsfoss.com/systemd-free-distros/)，例如使用轻量级 runit 来获得更好性能的 Void Linux 或主要使用 sysvinit 的 Devuan。


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


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


一种方法是检查 PID 为 1 的进程（毕竟，初始化系统是 Linux 系统上运行的第一个进程）。



```
ps 1

```

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


如果你 [跟随该符号链接](https://linuxhandbook.com/follow-symbolic-link/)，就可以获取初始化系统信息。有两种方法：


* 使用 `stat` 命令
* 使用 `readlink` 命令


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



> 
> ? 这些方法在 6 个初始化系统中进行了测试：Systemd、OpenRC、SysVinit、Busybox、runit 和 s6。
> 
> 
> 


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


以下是如何使用 `stat` 命令来了解你正在使用的初始化系统：



```
stat /sbin/init

```

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


![](/images/p/202401/17/080833uv5z353fwfokhz4v.png)


但是，如果你使用 systemd 之外的其他任何东西，它将显示初始化系统的名称，但是如果你使用的是 SysVinit，它只会显示 `init` 而不是 `sysvinit`：


![SysVinit only displays "init" instead of sysvinit](/images/p/202401/17/080833unmh33sxnb3y636n.png)


### 方法 2：使用 readlink 命令检查初始化系统


与之前的方法不同，当你使用 `readlink` 命令时，它只会打印初始化系统的名称。


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



```
readlink /sbin/init

```

![](/images/p/202401/17/080833b2c0plzgpzngu0qk.png)


如果你使用 [OpenRC 初始化访问](https://wiki.gentoo.org/wiki/OpenRC/openrc-init)，那么它将显示以下输出：


![](/images/p/202401/17/080834cfzx4xyyzn0y88yr.png)


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


![](/images/p/202401/17/080834fzw7vxarwx9wdwr7.png)


### 我为你写的小“脚本”


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


好吧，最简单的找出方法是在终端中 [使用 if-else bash 命令](https://itsfoss.com/bash-if-else/)，它将检查你是否正在运行由 systemd 驱动的发行版：



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

```

![](/images/p/202401/17/080835v96e38q4jr4rf8x9.png)


### 有关 systemd 的更多信息


当你知道你正在使用 systemd 支持的发行版，你就可以 [使用 systemctl 命令管理服务](https://linuxhandbook.com/systemctl-commands/)。


当然你也可以从头开始 [创建一个 systemd 服务](https://linuxhandbook.com/create-systemd-services/)。


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


*（题图：DA/02d49f79-0ec4-4e49-ae72-e3d46877dfa6）*




---


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


作者：[Sagar Sharma](https://itsfoss.com/author/sagar/) 选题：[lujun9972](https://github.com/lujun9972) 译者：[geekpi](https://github.com/geekpi) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出