在 Linux 系統中,可以通過以下幾種方法檢查服務是否設置為開機自啟動:
方法 1:使用 systemctl
命令(適用于 systemd 系統)
systemctl
是 systemd 系統的命令行工具,用于管理系統服務。以下是具體步驟:
-
檢查特定服務是否設置為開機自啟動:
systemctl is-enabled <service_name>
- 如果服務設置為開機自啟動,輸出為
enabled
。 - 如果服務未設置為開機自啟動,輸出為
disabled
。 - 如果服務是靜態服務(不會自動啟動,但可以手動啟動),輸出為
static
。 - 如果服務被禁用,輸出為
masked
。
例如:
systemctl is-enabled sshd
輸出:
enabled
- 如果服務設置為開機自啟動,輸出為
-
查看所有已啟用的服務:
systemctl list-unit-files --type=service
這將列出所有服務及其啟動狀態(
enabled
、disabled
等)。
方法 2:檢查 /etc/init.d/
或 /etc/rc.d/
(適用于 SysV init 系統)
在一些較舊的 Linux 系統中,服務的啟動腳本通常位于 /etc/init.d/
或 /etc/rc.d/
目錄下。可以通過以下方法檢查:
-
檢查服務是否在
/etc/init.d/
中:ls /etc/init.d/
如果服務存在于此目錄中,說明它可能被配置為開機自啟動。
-
檢查服務是否在運行級別中啟用:
chkconfig --list
這將列出所有服務及其在不同運行級別中的狀態。
-
手動檢查服務的啟動鏈接:
服務的啟動鏈接通常位于/etc/rc.d/rcN.d/
目錄下(N
表示運行級別)。例如:ls /etc/rc.d/rc3.d/
如果看到類似
Sxx<service_name>
的文件,說明該服務在運行級別 3 中被設置為開機自啟動。
方法 3:檢查 /etc/rc.local
文件
某些系統會在 /etc/rc.local
文件中手動添加開機啟動命令。可以檢查該文件是否包含啟動服務的命令:
cat /etc/rc.local
方法 4:使用 chkconfig
命令(適用于 SysV init 系統)
chkconfig
是一個用于管理 SysV 服務的工具,可以檢查服務是否設置為開機自啟動:
-
檢查特定服務是否設置為開機自啟動:
chkconfig --list <service_name>
例如:
chkconfig --list sshd
輸出示例:
sshd 0:off 1:off 2:on 3:on 4:off 5:on 6:off
如果運行級別 3、5 等顯示為
on
,說明服務在這些運行級別中被設置為開機自啟動。 -
查看所有服務的狀態:
chkconfig --list
方法 5:檢查 /etc/systemd/system/
或 /lib/systemd/system/
(適用于 systemd 系統)
在 systemd 系統中,服務的配置文件通常位于 /etc/systemd/system/
或 /lib/systemd/system/
目錄下。可以檢查這些目錄中的服務文件是否包含 WantedBy=multi-user.target
或類似的指令:
-
檢查服務配置文件:
cat /lib/systemd/system/<service_name>.service
如果文件中包含以下內容,說明服務被設置為開機自啟動:
[Unit] WantedBy=multi-user.target
-
查看所有服務配置文件:
ls /etc/systemd/system/multi-user.target.wants/
如果服務的
.service
文件存在于該目錄中,說明它被設置為開機自啟動。
總結
- 對于 systemd 系統:推薦使用
systemctl
命令。 - 對于 SysV init 系統:推薦使用
chkconfig
或檢查/etc/init.d/
和/etc/rc.d/
目錄。
如果你不確定系統使用的是哪種初始化方式,可以通過以下命令檢查:
ls -l /sbin/init
如果輸出包含 systemd
,則系統使用的是 systemd;否則可能是 SysV init 或其他初始化方式。