如何在遠端Linux伺服器上控制Systemd服務?


作為Linux使用者和管理員,我們負責管理遠端Linux伺服器上的服務,這可能包括像Apache或Nginx這樣的Web伺服器,或像MySQL或PostgreSQL這樣的資料庫伺服器。為了有效地管理這些服務,我們需要深入瞭解Linux的基礎系統和服務管理器——systemd。

Systemd是一個強大且功能豐富的系統和服務管理器,專為基於Linux的作業系統而設計。它負責管理服務的初始化和終止,跟蹤系統程序並監督系統資源。它已廣泛成為許多現代Linux發行版(如Ubuntu、Fedora、CentOS和Debian)的預設系統和服務管理器。控制遠端Linux伺服器上的systemd服務至關重要。這包括啟動、停止、重啟、啟用、停用和監控系統服務等任務。雖然有多種方法可以管理systemd服務,但使用systemctl、journalctl等命令是最有效和可靠的方式。

本文提供了一個關於利用systemd命令管理遠端Linux伺服器上服務的綜合教程。我們將介紹諸如啟動和停止服務、檢查其狀態、在啟動時啟用和停用服務以及檢視系統日誌等命令。每個命令都將附帶其輸出,並附帶相應的示例以增強理解。

步驟1:連線到遠端伺服器

要使用SSH連線到遠端伺服器,請在本地計算機上開啟終端,然後鍵入以下命令,將“username”替換為您自己的使用者名稱,將“remote.server.com”替換為遠端伺服器的主機名或IP地址:

ssh username@remote.server.com

輸出可能如下所示:

The authenticity of host 'remote.server.com (192.168.1.1)' can't be established.
RSA key fingerprint is 11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'remote.server.com,192.168.1.1' (RSA) to the list of known hosts.
username@remote.server.com's password:

成功使用正確的密碼進行身份驗證後,您將能夠訪問遠端伺服器,並顯示該伺服器的命令終端或提示符。

步驟2:檢查服務狀態

與遠端伺服器建立連線後,需要使用系統中的systemctl status命令檢查任何服務的狀 態。要了解任何服務的狀 態,只需在Linux終端或提示符中寫入此命令:

sudo systemctl status apache2

命令“sudo systemctl status apache2”將為您提供有關Apache服務當前狀態的簡要詳細資訊。

apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-03-15 14:30:00 UTC; 5min ago
   Main PID: 12345 (apache2)
      Tasks: 55 (limit: 2288)
     Memory: 67.0M
     CGroup: /system.slice/apache2.service
             ├─12345 /usr/sbin/apache2 -k start
             ├─12346 /usr/sbin/apache2 -k start
             └─12347 /usr/sbin/apache2 -k start
Mar 15 14:30:00 example.com systemd[1]: Started The Apache HTTP Server.

步驟3:啟動服務

要啟動特定服務,請將“service_name”替換為服務的實際名稱。例如,如果您要在遠端伺服器上啟動Apache Web伺服器,您可以編寫以下輸入命令:

sudo systemctl start apache2

執行命令後,Apache服務將在遠端伺服器上啟動,並將顯示相應的輸出。

[sudo] password for <username>: 

注意:這是您的密碼提示。輸入您的密碼並按Enter鍵。如果密碼正確,輸出可能如下所示:

Job for apache2.service started successfully

步驟4:停止服務

如果某個服務正在執行並且您需要停止它,您可以使用systemctl stop命令來執行此操作。此停止命令的語法如下:

sudo systemctl stop apache2

輸出可能如下所示:

[sudo] password for user: 
[user@hostname ~]$ sudo systemctl stop apache2
[user@hostname ~]$

這將停止遠端伺服器上的Apache服務。

步驟5:重啟服務

如果您對服務進行了更改,並且需要重新啟動它才能使這些更改生效,您可以使用systemctl restart命令來執行此操作。此輸入命令的語法如下:

sudo systemctl restart apache2

它將允許您輸入該使用者的密碼:

[sudo] password for user: 

使用“sudo”命令以root使用者的特權執行“systemctl”命令時,終端會請求使用者的密碼。這是重新啟動Apache Web伺服器所必需的,因為它需要管理員訪問許可權。輸出將如下所示:

Restarting Apache2 web server... 

此空行表示Apache Web伺服器正在重新啟動。


此行是空行,用於分隔命令提示符的輸出。

請注意,實際輸出可能因使用的特定Linux發行版和版本而異。此外,如果重新啟動Apache Web伺服器時出現任何錯誤或問題,則可能會顯示其他輸出以指示問題所在。

步驟6:啟用服務

如果希望服務在系統啟動時自動啟動,可以使用systemctl enable命令啟用它。此輸入命令的語法如下:

sudo systemctl enable apache2

此命令的輸出將取決於Apache2服務的當前狀態。如果服務已啟用,您可能會看到如下所示的訊息:

Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.Executing: /lib/systemd/systemd-sysv-install enable apache2

如果服務尚未啟用,輸出可能如下所示:

Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.

無論哪種方式,systemctl enable命令都確保Apache2服務將在系統啟動時自動啟動。

步驟7:檢查服務日誌

如果服務執行不正常或您遇到問題,可以使用journalctl命令檢查其日誌。

這是一個輸入命令示例:

sudo journalctl -u apache2

journalctl命令的輸出:

-- Logs begin at Mon 2023-03-13 00:00:00 UTC, end at Mon 2023-03-13 23:59:59 UTC. --
Mar 13 08:30:01 server systemd[1]: Starting The Apache HTTP Server...
Mar 13 08:30:01 server apachectl[12345]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
Mar 13 08:30:01 server systemd[1]: Started The Apache HTTP Server.
Mar 13 08:30:01 server systemd[1]: apache2.service: Main process exited, code=exited, status=0/SUCCESS
Mar 13 08:30:01 server systemd[1]: apache2.service: Succeeded.

步驟8:退出遠端伺服器

完成遠端伺服器上的任務後,您可以透過鍵入以下命令退出SSH會話:

exit

以下是終端輸出示例:

me@local-machine:~$ ssh remote-server
Welcome to remote-server!
me@remote-server:~$ ls
file1.txt  file2.txt  file3.txt
me@remote-server:~$ exit
logout
Connection to remote-server closed.
me@local-machine:~$

這將關閉SSH連線並返回到本地計算機的命令提示符。

結論

總而言之,我們學習瞭如何使用systemctl status、systemctl start、systemctl stop、systemctl enable和systemctl disable等命令管理遠端Linux伺服器上的systemd服務以及更多命令。這些命令可幫助您檢查服務的狀態,啟動和停止它們,以及啟用/停用在啟動時的自動啟動。

透過遵循這些步驟,我們可以有效地管理遠端Linux伺服器上的systemd服務並確保其平穩執行。此外,自動化服務啟動和關閉可確保其持續可用性。總而言之,掌握控制遠端Linux伺服器上systemd服務的能力對於任何Linux系統使用者來說都是一項必不可少的技能。

更新於:2023年7月27日

450 次檢視

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告