如何判斷你是在 Linux 上使用 Systemd 還是其他 Init

當您啟動 Linux 系統時,它會從一個進程開始,即一個名為 init 的程序。

自發布以來UNIX 版本五(系統 V),SysV 引導系統一直是最流行的,並於 1991 年被引入 Linux 系統。

它多年來一直是最受歡迎的啟動系統,但逐漸許多 Linux 發行版開始使用 OpenRC、Runit、UpStart 等。

如今,Systemd 被廣泛使用,因此您很可能正在您的系統上使用 systemd。

但是如何確認呢? 你運行這個命令:

                      
                        ps -p 1 -o comm=
                      
                    

如果你在輸出中得到 systemd,那麼你正在使用 systemd。

一個系統Ubuntu運行 systemd

這適用於使用 systemd 的 Linux 發行版,但如果您使用其他一些 init 系統怎麼辦? 讓我們也討論一下那部分。

檢查 Linux 中的引導系統

請記住,init 是在您的 Linux 系統上啟動的第一個進程。

這意味著詳細信息在 PID 1 的進程中。檢查進程 1,然後:

                      
                        ps 1
                      
                    

但不幸的是,這還不夠,因為該進程通常顯示為 /sbin/init 並且不能提供準確的信息。

                      
                        [email protected]:~$ ps 1
    PID TTY      STAT   TIME COMMAND
      1 ?        Ss     0:01 /sbin/init splash
                      
                    

/sbin/init 是指向實際啟動過程的符號鏈接。 您可以按照符號鏈接查看實際過程。

我正在使用 stat 命令,您可以看到 /sbin/init 鏈接到 Ubuntu 上的 /lib/systemd/systemd。

                      
                        [email protected]:~$ stat /sbin/init
  File: /sbin/init -> /lib/systemd/systemd
  Size: 20        	Blocks: 0          IO Block: 4096   symbolic link
Device: 10306h/66310d	Inode: 30675721    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-09-21 09:17:59.616364311 +0530
Modify: 2022-06-27 23:58:46.000000000 +0530
Change: 2022-07-12 18:24:23.667196373 +0530
 Birth: 2022-07-12 18:24:23.667196373 +0530

                      
                    

這表明 systemd 正在使用中。

再舉一個例子。 我正在使用 Alpine Linux 3.16 版。 這是初始信息。

                      
                        localhost:~# stat /sbin/init
  File: '/sbin/init' -> '/bin/busybox'
  Size: 12        	Blocks: 0          IO Block: 4096   symbolic link
Device: 800h/2048d	Inode: 169         Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-09-22 04:53:46.677137693 +0000
Modify: 2022-07-21 04:10:19.149395174 +0000
Change: 2022-07-21 04:10:19.149395174 +0000

                      
                    

如您所見,Alpine Linux 使用 BusyBox 輕量級引導系統。

Sistema de inicio BusyBox en Linux

您還可以使用 pstree 命令,但這可能不適用於任何其他發行版以識別 init 系統。

                      
                        pstree
                      
                    

對於 Ubuntu,它清楚地表明 Linux 發行版是否使用 systemd。

comando pstree para verificar si systemd

如您所見,這可能並不容易,但要知道您的 Linux 系統是否使用 systemd 也不是那麼複雜。


相關文章