如何在遠端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系統使用者來說都是一項必不可少的技能。