translated

This commit is contained in:
geekpi 2024-01-08 08:38:20 +08:00
parent f5b083689f
commit 313715ad9c
2 changed files with 135 additions and 135 deletions

View File

@ -1,135 +0,0 @@
[#]: 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: " "
How to Check if Your Linux System Uses systemd
======
Every mainstream Linux distro including Ubuntu, Fedora, openSUSE, and Arch uses systemd by default.
But there are [many non-systemd distros][1] like Void Linux that uses lightweight runit for better performance or Devuan that uses sysvinit on principal basis.
The problem comes when you are trying to follow some tutorial or documentation and it has commands specific to systemd or some other init service.
And this is where you have to check if your Linux system uses systemd or something else.
One way would to be check the process with PID 1 (after all, an init system is the first process to run on a Linux system).
```
ps 1
```
But its output could be misleading as often it shows `/sbin/init` which is just a soft link to actual init process.
If you [follow that symbolic link][2], you can get the init system information. There are two ways of doing that:
* Using the stat command
* Using the readlink command
So let's start with the first one.
📋
These methods were tested with 6 init systems: Systemd, OpenRC, SysVnint, Busybox, runit, and s6.
### Method 1: Check if systemd is in use with the stat command
Here's how you can use the stat command to find out what init system you are using:
```
stat /sbin/init
```
If you are using a systemd-powered distro, then it will show you the following output:
![][3]
But if you are using anything else than systemd, it will show the init name unless you are using SysVnit which will only show you `init` instead of `sysvnit`:
![SysVnit only displays "init" instead of sysvnit][4]
### Method 2: Check the init system using the readlink command
Unlike the previous method, when you use the readlink command, it will only print the name of the init system.
So if you want to know if you are using Systemd or not, simply use the following command:
```
readlink /sbin/init
```
![][5]
If you are using the [OpenRC init service][6], then it will show the following output:
![][7]
But if you are using SysVnit, then, it will show you the following output:
![][8]
### Tiny 'script' I wrote for you
Another way is to check if the `/run/systemd/system` directory exists or not.
Well, the easiest way to find out is to [use an if-else bash command][9] in your terminal which will check if you are running a systemd-powered distro or not:
```
if [ -d /run/systemd/system ]; then echo "System is running systemd"; else echo "System is not running systemd"; fi
```
![][10]
### More on systemd
Once you know you are using the systemd-powered distro, here's how you can [manage services using the systemctl command][11]:
![][12]
Want to [create a systemd service][13] from scratch? You can do that too:
![][12]
I hope you will find this guide helpful.
--------------------------------------------------------------------------------
via: https://itsfoss.com/check-if-systemd/
作者:[Sagar Sharma][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者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/

View File

@ -0,0 +1,135 @@
[#]: 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/