mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-23 21:20:42 +08:00
translated
This commit is contained in:
parent
f5b083689f
commit
313715ad9c
@ -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/
|
@ -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/
|
Loading…
Reference in New Issue
Block a user