簡介
在計算領域中,事情並不總是按計劃進行。非預期的系統崩潰往往會促使系統管理員手動重啟系統並重啟個別服務。在系統崩潰或重啟後,找出並重啟應用程式運行所需的每個服務可能會非常繁瑣。在這個由兩部分組成的教學的第一部分中,我們將透過實際範例向您展示如何配置服務,使其在系統崩潰或伺服器重啟後自動啟動。而第二部分將涵蓋理論資訊,關於我們在第一部分中所實現的內容。
我們將使用 MySQL 資料庫服務作為實際範例。然而,相同的原理也適用於構成完整伺服器的其他程序,例如 Nginx, Apache, Redis 或其他應用程式。您可以查看我們關於 如何安裝 MySQL, Nginx 以及 Apache.
在 Linux 發行版中,有三個主要的 初始化 (init) 系統,具體取決於您運行的發行版。某些發行版可能配有兩個或多個 init 系統,如下所述:
- System V – 一個較舊的 init 系統,存在於較舊的發行版中,例如:
- Ubuntu 9.04 及更早版本
- CentOS 5 及更早版本
- Debian 6 及更早版本
- Upstart – 用於以前的發行版,例如:
- CentOS 6
- Ubuntu 9.10 至 Ubuntu 14.10 以及 Ubuntu 14.04
- Systemd – 用於最新的發行版,例如:
- CentOS 7
- Debian 7 和 8。
- Ubuntu 15.04 及更新版本
背景
作業系統(特別是 Linux 和 Unix 系統)在背景運行程序和服務是很常見的。這些服務可能隨作業系統軟體一起提供,有些則可能隨您安裝的使用者應用程式一起提供。
作業系統服務包括:
- sshd – 這是允許遠端連線的常駐程式 (daemon)。
- cupsd – 這是控制列印的常駐程式 (daemon)。
已安裝的應用程式服務包括:
- httpd/apache2 – 隨 Apache2 網頁伺服器提供的服務。
- nginx – 隨 Nginx 網頁伺服器提供的服務。
為了確保我們的網頁應用程式、資料庫、郵件伺服器等可以存取,這些服務必須持續運行。如果您是系統管理員或充滿好奇心的應用程式開發人員,您會希望確保這些服務持續運行,並且在不幸發生系統崩潰時,它們能在系統重啟後自動啟動。這正是我們將在本實作教學中學習的內容。
雖然設定警報並持續監控您的 Linux 發行版至關重要,但得益於管理服務的 init 系統,一些 Linux 服務如果配置得當,是可以進行自我修復的。
在 Linux 發行版中,有一些實現系統初始化的模式操作,稱為 執行等級 (runlevels)。要讓服務自動啟動,必須將其新增到執行等級中。每個類 Linux 和 Unix 系統都有四個常見的執行等級,如下所示:
- 0 – 執行等級 0 表示系統關機。
- 1 – 執行等級 1 表示單一使用者、救援模式。
- 2, 3, 4 – 這些執行等級表示系統已在多使用者、啟用網路、文字模式下啟動的狀態。
- 5 – 執行等級 5 表示多使用者、啟用網路、圖形模式。
- 6 – 執行等級 6 表示系統重啟。
在本教學中,您將學習如何使用前面解釋的三種不同 init 模式(System V、Upstart 和 Systemd),配置 Linux 服務在系統重啟時自動啟動.
先決條件
本實作教學需要您擁有一個可用於跟著操作的 Linux VPS。您可以利用 Cloudsigma 的免費試用期 並啟動一些伺服器來嘗試這些指令。您可以跟著我們的 逐步教學來設定您的 Ubuntu 伺服器.
您在本教學中建立的伺服器純粹是為了配合動手實作,您不應該在生產伺服器上嘗試這些指令,因為這會中斷許多服務。
您將需要的一些發行版:
- Ubuntu 9.04 及更早版本,或 Debian 6 x64(將用於演示 System V init 系統)
- Ubuntu 14.04 x64(將用於演示 Upstart)
- CentOS 7 x64 (將用於演示 systemd)。
請確保您已設置具有 sudo 權限的非 root 用戶。您可以查看我們的 在此處配置 sudoers 文件的教程.
使用 System V
這是最古老的 init 系統,曾用於早期的 Linux 發行版,例如:
- Debian 6 及更早版本
- CentOS 5 及更早版本
- Ubuntu 9.04 及更早版本
大多數可安裝的伺服器應用程式(如 MySQL 和 Nginx)預設都附帶儲存在 /etc/init.d 目錄中的 init 腳本。這些腳本使它們能夠在重啟後啟動。然而,它們可能未被配置為在系統崩潰後自動啟動。
System V 自動啟動檢查清單
第一步是檢查 /etc/init.d/service 目錄中是否存在可用的 Bash init 腳本。要啟用該服務,在 Debian 或 Ubuntu 發行版中,使用 update-rc.d 命令,在 CentOS 系統中,使用 chkconfig。請替換為您實際的服務名稱:
|
1 |
sudo update-rc.d service enable |
上述命令會在 /etc/rc2.d 目錄中創建一個符號連結,如下所示。請勿自行創建,因為它是自動生成的:
|
1 |
lrwxrwxrwx 1 root root 20 Dec 10 07:09 S02mysql -> ../init.d/service |
在文件 /etc/inittab 的底部添加一行 respawn,如下面的通用示例所示。請記得將其替換為您應用程式啟動腳本的實際路徑:
|
1 |
id:2345:respawn:/bin/sh /path/to/your-application/startup |
輸入以下命令以停止和啟動服務:
|
1 2 |
sudo service service-name stop sudo service service-name start |
接下來,重啟伺服器:
|
1 |
sudo reboot |
如何測試更改?
重啟伺服器後,使用以下命令搜索進程號,以驗證服務是否已啟動:
|
1 |
ps -ef | grep service-name |
使用以下命令終止該進程:
|
1 |
sudo kill -9 process_number |
五分鐘後,驗證服務是否已正常運行。
使用真實服務進行 System V 實際配置
在接下來的步驟中,我們將嘗試一個真實的伺服器應用程式,例如 MySQL。您應該能夠訪問一個 Debian 6 虛擬機器。使用具有 sudo 權限的帳戶,通過 SSH 或 putty(如果您使用的是 Windows 桌面)連接到它。
步驟 1:安裝 MySQL
輸入以下命令以安裝 MySQL:
|
1 |
sudo apt-get install mysql-server -y |
安裝開始時,系統會提示您輸入 root 密碼。然後,輸入您選擇的密碼並進行確認。等待安裝完成,然後輸入以下命令開始對 MySQL 進行安全配置:
|
1 |
mysql_secure_installation |
系統會提示您輸入之前設置的 root 密碼。按 N 保持不變。接下來,按 Y 接受後續提示,以刪除匿名用戶、禁用遠端 root 登入並刪除測試資料庫。最後,接受重新載入權限表,使更改自動生效。
這就完成了 MySQL 的安裝。您可以通過輸入以下命令來檢查服務是否正在運行:
|
1 |
service mysql status |
步驟 2:配置 MySQL 在重啟後自動啟動
MySQL 預設配置為在系統重啟後啟動。您可以在 /etc/rc2.d 目錄中找到指向 MySQL 初始化腳本的符號連結。這些符號連結不是手動創建的。您可以使用 update-rc.d 命令來啟用和禁用服務。
輸入以下命令以列出該目錄的內容:
|
1 |
ls -l /etc/rc2.d |
檢查您是否能注意到指向 MySQL init 腳本的符號連結:
|
1 |
lrwxrwxrwx 1 root root 15 Dec 2 10:42 S01mysql -> ../init.d/mysql |
這個 S 非常重要,因為只要您能看到一個 S 服務預設運行級別目錄下的腳本,init 系統將在伺服器啟動時啟動該服務。要驗證 MySQL 是否會在重啟後自動啟動,請輸入以下命令來重啟系統:
|
1 |
sudo reboot |
您的 SSH 連線將在重啟期間中斷。請等待一兩分鐘後重新連線。執行以下命令以檢查服務是否正在運行:
|
1 |
service mysql status |
輸出將顯示該服務正在運行。這意味著它在重啟後自動啟動。對於未配置為自動啟動的服務,您必須自行配置。
我們可以停用 MySQL 服務並重啟系統以測試它是否會自動啟動。在 Debian 和 Ubuntu 系統中,您可以使用 update-rc.d 命令從 init 系統中新增或移除服務。輸入以下命令以停用 MySQL 服務:
|
1 |
sudo update-rc.d mysql disable |
重啟系統並使用 SSH 重新連線。嘗試使用以下命令連線至 MySQL:
|
1 |
mysql -u root -p |
您將會收到類似以下的 MySQL 錯誤:
|
1 |
ERROR 2002 (HY000): Can't connect to local MySQL server |
然後,輸入以下命令以重新啟用服務:
|
1 |
sudo update-rc.d mysql enable |
如果您使用的是 CentOS 發行版,命令將會是:
|
1 |
sudo chkconfig mysql enable |
由於 MySQL 最初並未啟動,您必須啟動它。輸入以下命令:
|
1 |
sudo service mysql start |
步驟 3:配置服務 (MySQL) 在系統崩潰後自動啟動
System V 在崩潰後不會自動啟動程序。我們可以透過尋找 MySQL 程序 ID 並將其終止來模擬系統崩潰。輸入以下命令以尋找 MySQL 程序 ID:
|
1 |
ps -ef | grep mysql |
從輸出中,尋找 MySQL 程序。運行 MySQL 的主要程序是 mysqld_safe 和 mysqld。記下它們的程序 ID(這些是數字),並使用以下命令將其終止:
|
1 2 |
sudo kill -9 mysqldsafe_number sudo kill -9 mysqld_number |
使用以下命令檢查 MySQL 服務狀態:
|
1 |
sudo service mysql status |
輸出將顯示 MySQL 已停止。我們可以使用 service start 命令手動重啟它。然而,我們希望這是一個自動的過程。為了實現這種自動行為,我們需要編輯 /etc/inittab 檔案。這是 System V init 在開機時讀取的第一個檔案。/etc/inittab 檔案包含有關程序在崩潰時應如何運作的說明。如果配置得當,它會在發生崩潰時再次重啟系統。在我們的情況下,我們要確保 MySQL 是這些服務之一。
這個 /etc/inittab 檔案對 Linux 發行版極為重要。它決定了您的系統是否會重啟。如果您在命令中出錯,系統在重啟時可能無法啟動。正如我們之前所指出的,我們希望您僅在測試伺服器環境中嘗試這些命令,而不是在生產環境中。
首先,在開始編輯之前備份該檔案:
|
1 |
sudo cp /etc/inittab /etc/inittab.original |
接下來,使用 nano 開啟該檔案:
|
1 |
sudo nano /etc/inittab |
捲動到檔案末尾並新增以下程式碼片段:
|
1 |
ms:2345:respawn:/bin/sh /usr/bin/mysqld_safe |
上述命令會在系統崩潰後重啟 mysql_safe 程序。它有四個由冒號分隔的欄位,說明如下:
- ms: 指定程序的 ID。
- 2345: 指定命令適用的運行級別。在此例中:運行級別 2、3、4、5。
- respawn: 指定動作。在此例中,我們是重新生成 (respawning) 或重啟該程序。
- /bin/sh /usr/bin/mysqld_safe: 最後一部分定義了程序 – 用於重啟該程序的執行命令。
現在按下 Ctrl + O 和 Enter 鍵以儲存檔案。接著,按下 Ctrl + X 鍵以關閉編輯器。輸入以下指令來啟動服務:
|
1 |
sudo service mysql start |
重新啟動伺服器,然後執行前面說明的指令以尋找程序編號。接下來,終止這些程序,從以下指令開始:ps -ef | grep mysql。等待幾分鐘,然後輸入以下指令以檢查 MySQL 的狀態:
|
1 |
sudo service mysql status |
輸出應該會顯示 MySQL 服務已啟動並正在執行,這表示它在當機後能夠重新啟動。您可以對伺服器上的其他服務執行相同的程序。
使用 Upstart 自動啟動服務
Upstart 是另一個 init 系統,最初在 Ubuntu 6 中引入,後來在 Ubuntu 9.10 中成為預設系統。RHEL 6 及其衍生版本,以及 Google 的 Chrome OS 也使用 Upstart init 系統。對於本節中的步驟,您應該擁有一台執行以下任一發行版的伺服器:
- Ubuntu 9.10 至 Ubuntu 14.10,以及 Ubuntu 的 LTS 版本(即 Ubuntu 14.04)。
- CentOS 6
讓我們來看看如何設定 Upstart 檔案,以便在重新啟動或系統當機時自動啟動您的伺服器服務。Upstart 使用儲存在 /etc/init 目錄下的設定檔來控制 Linux 發行版中的服務。大多數最新版本的伺服器應用程式(例如 MySQL 和 Nginx)都會在 /etc/init 目錄中安裝自己的 init 指令碼。因此,它們將在重新啟動和系統當機後自動啟動,您無需執行任何操作。
Upstart 自動啟動檢查清單
以下是一些可供檢查的參考設定,以確保您的服務已設定為自動啟動。
- 確保該服務在以下目錄中含有 init 指令碼:/etc/init/service_name.conf – service_name 為您特定服務的實際名稱。您應該檢查 /etc/init/service_name.conf 檔案中的以下兩行:
- 包含類似以下內容的一行:start on runlevel [2345]。這表示該服務將在系統重新啟動時啟動。
- 包含類似以下內容的一行:respawn。這表示該服務將在系統當機後重新產生/重新啟動。
- 確保該目錄中沒有服務覆寫檔案:/etc/init/service_name.override。除非您或其他系統管理員先前已建立它。
- 輸入以下指令來停止和啟動服務:
|
1 2 |
sudo initctl stop service_name sudo initctl start service_name |
- 重新啟動系統,並在幾分鐘後重新連線。現在,執行一些測試以查看是否正常運作
- 重新啟動後,驗證服務是否已啟動並正在執行。輸入以下指令以搜尋程序編號,將 service_name 替換為您正在測試的服務的實際名稱:
|
1 |
ps -ef | grep service_name |
- 取得程序編號後,輸入以下指令以終止該程序:
|
1 |
sudo kill -9 process_number |
- 等待幾秒鐘,然後再次驗證程序是否已啟動並正在執行。
使用實際服務進行 Upstart 實際設定
在下一節中,我們將嘗試示範如何將 Upstart 與實際服務搭配使用。我們將在以 MySQL 作為服務的 Ubuntu 14.04 虛擬機器伺服器上進行測試。如果您使用的是 Windows,請使用 ssh 或 putty 連線到您的 Ubuntu 14.04 測試伺服器。通常,您應該使用具有 sudo 權限的非 root 使用者。登入後,我們就可以開始以下步驟:
步驟 1:安裝 MySQL
在安裝任何新軟體之前,請務必記得更新您的套件:
|
1 |
sudo apt-get update |
現在,輸入以下指令來安裝 MySQL 伺服器:
|
1 |
sudo apt-get install mysql-server –y |
在系統提示時建立 root 密碼。等待安裝完成,然後執行以下指令以開始保護您的 MySQL 安裝:
|
1 |
mysql_secure_installation |
按照提示進行操作,就像您在前面章節中所做的那樣。然後,刷新權限以使變更立即生效。
步驟 2:設定服務 (MySQL) 在系統重啟後自動啟動
MySQL 已設定為在重啟後自動啟動。我們查看其設定檔只是為了學習如何設定我們自訂的應用程式,使其也能在重啟後自動啟動。MySQL 服務在安裝後已自動啟動。不過,讓我們透過輸入以下命令來確認它正在運行:
|
1 |
sudo initctl status mysql |
您應該會看到表示 MySQL 服務正在運行的輸出,類似這樣:
|
1 |
mysql start/running, process 2553 |
重啟您的伺服器並重新登入。再次輸入以下命令以測試它是否正在運行:
|
1 |
sudo initctl status mysql |
輸出將顯示 MySQL 正在運行,這意味著它在重啟後已自動啟動。在這種情況下,不需要更改任何內容。然而,其他應用程式的行為可能不盡相同。您可能會好奇 Upstart 初始化系統是如何知道應該在重啟後自動啟動 MySQL 的。MySQL 將其 Upstart 啟動設定檔安裝在以下位置:/etc/init/mysql.conf。Upstart 檔案不是 Shell 指令碼,而是包含 pre-start 和 post-start 事件指令碼區塊的文字檔案。這些區塊指示 Upstart 系統在 MySQLd 程序啟動時或已經啟動時要執行什麼操作。
輸入以下命令以在 nano 編輯器中開啟該檔案:
|
1 |
sudo nano /etc/init/mysql.conf |
該檔案的輸出可能如下所示:
|
1 2 3 4 5 6 7 8 |
description "MySQL Server" author "Mario Limonciello <superm1@ubuntu.com>" start on runlevel [2345] stop on starting rc RUNLEVEL=[016] respawn respawn limit 2 5 |
如您所見,start 區塊指示 MySQL 在運行級別 (runlevel) 2,3,4,5 啟動,而不是 0,1,6。如果您正在為您的應用程式定義 Upstart 設定,您將在此區塊中進行定義。respawn 區塊指示 Upstart 在當機後該怎麼做。我們將在下一節中討論這一點,因此請在 nano 編輯器中保持該檔案開啟。
步驟 3:設定服務 (MySQL) 在當機後自動重啟
在 respawn 指令於 /etc/init/mysql.conf 檔案中指示 Upstart 在當機後重新啟動 MySQL 服務。
respawn limit 指令指示 Upstart 在以秒為單位的指定時間間隔內,應嘗試重新啟動已當機的 MySQL 服務多少次。第一個參數 (2) 表示嘗試次數。第二個參數 (5) 表示以秒為單位的時間間隔。如果當機後,Upstart 在達到限制次數內仍無法重啟 MySQL 服務,它將保持停止狀態。這種行為旨在保護系統,避免在不斷嘗試重新啟動持續當機的服務時影響系統穩定性。您現在可以關閉編輯器,而無需進行任何更改。
讓我們測試一下 MySQL 在當機後是否會自動恢復。輸入以下命令以檢查狀態並獲取 MySQL 服務的程序編號:
|
1 |
sudo initctl status mysql |
輸出應該類似這樣。請記下程序編號,編號我們稍後會用到:
|
1 |
mysql start/running, process 738 |
接下來,輸入以下命令以終止該程序。這會模擬當機。請替換為您在上一個命令中獲得的程序編號:
|
1 |
sudo kill -9 7738 |
再次輸入以下命令以檢查 MySQL 的狀態:
|
1 |
sudo initctl status mysql |
它應該會再次運行,但程序編號可能不同:
|
1 |
mysql start/running, process 1428 |
發生這種情況是因為在 /etc/init/mysql.conf 檔案。它能確保在系統發生任何故障時,MySQL 都會自動啟動。因此,依賴 MySQL 資料庫的應用程式將繼續如預期般運行。
使用 Systemd 自動啟動服務
Systemd 是大多數最新 Linux 發行版中常見的初始化系統。這很可能是您在啟動新的 VPS 時會使用的系統。它最初是在 Fedora 中引入的。它隨附於 RHEL 7 及其衍生版本(如 CentOS 7)。從 Ubuntu 15.04 開始,您會發現原生支援 Systemd。Systemd 向後相容 System V 初始化指令碼和指令。因此,任何 System V 服務都應該能在 Systemd 下運作。System V 和 Upstart 中使用的大多數指令都已修改為適用於 Systemd。
使用 Systemd,大多數伺服器應用程式(例如 MySQL 和 Nginx)在重新啟動或關機後都會自動啟動,您無需更改任何內容。對於您的自訂應用程式,您必須建立自己的初始化指令碼來自動重新啟動服務。
如需有關 Systemd 的更多深入資訊,請參閱我們的 關於如何使用 Systemctl 管理 Systemd 服務和單元的教學.
Systemd 自動啟動檢查清單
以下是一些參考設定,可用於檢查並確保您的服務已設定為使用 Systemd 自動啟動。
- 該服務必須在以下位置擁有一個可運作的 Systemd 初始化指令碼:/etc/systemd/system/multi-user.target.wants/serviceName.service。ServiceName 是您正在設定的服務的實際名稱。
- 啟用該服務的指令為:
|
1 |
sudo systemctl enable serviceName.service |
- 該指令會在 /etc/systemd/system/multi-user.target.wants/ 目錄中建立一個符號連結,其外觀可能類似於:
|
1 |
lrwxrwxrwx 1 root root 11 Dec 1 04:43 /etc/systemd/system/multi-user.target.wants/serviceName.service -> /usr/lib/systemd/system/serviceName.service |
- 建立該符號連結後,您就已啟用了開機後自動重新啟動。
- 若要啟用變更,請重新載入系統精靈,然後使用以下指令重新載入服務:
|
1 2 3 |
sudo systemctl daemon-reload sudo systemctl restart serviceName.service |
- 若要測試您的設定是否會在重新啟動後啟動服務,您可以重新啟動系統:
|
1 |
sudo reboot |
- 系統重新啟動時,使用以下指令搜尋程序編號:
|
1 |
ps -ef | grep serviceName |
- 記下程序編號並使用以下指令將其結束:
|
1 |
sudo kill -9 process_number |
- 等待幾秒鐘,然後再次搜尋該服務以驗證其是否已恢復運行。
使用實際服務進行 Systemd 實務設定
在本節中,我們將嘗試在 Ubuntu 20.04 虛擬機器上設定 MySQL 服務。
步驟 1:連線到您的虛擬專屬伺服器 (Ubuntu 20.04 或 CentOS 7 x64)
登入您的 VPS 或從 Cloudsigma 面板 建立一個,如果您使用的是 Windows,請使用 SSH 或 Putty 進行連線。在本節教學中,我們使用的是 Ubuntu 20.04 伺服器。相同的指令也適用於 CentOS 7。請務必使用具有 sudo 權限的非 root 使用者。
步驟 2:安裝 MySQL(我們正在設定的服務)
首先,更新您的系統:
|
1 |
sudo apt update |
然後,您可以使用以下指令安裝 MySQL 伺服器:
|
1 |
sudo apt install mysql-server –y |
接下來,執行以下指令開始進行 MySQL 安全性設定:
|
1 |
sudo mysql_secure_installation |
該指令碼會詢問您是否要設定 VALIDATE PASSWORD(驗證密碼)元件,或按任意字母繼續而不啟用該元件。請點選此連結以了解更多關於 MySQL 密碼驗證元件.
按 1 啟用它,然後按 1 選擇中等層級。輸入強密碼:大寫字母、小寫字母、特殊字元和數字的組合。確認密碼,並確認詢問您是否要將輸入的密碼用作 root 密碼的提示。對於其餘的其他提示,請按 y 接受它們,就像您在前面章節中所做的那樣。最後,重新整理 MySQL 的權限以重新載入變更。
步驟 3:設定 MySQL 在重新啟動後自動啟動
MySQL 已設定為在重新啟動後啟動,因此您無需進行任何變更。不過,我們可以使用 MySQL 設定檔來學習如何設定我們的自訂檔案。
首先,檢查 MySQL 服務是否已設定為在開機時啟動。輸入以下指令(請注意,在 Centos 中,MySQL 服務名稱為 mysqld):
|
1 |
sudo systemctl is-enabled mysql.service |
以下是輸出結果:

接下來,輸入以下指令重新啟動 VPS:
|
1 |
sudo reboot |
使用 ssh 連線回去,並輸入以下指令來檢查 MySQL 服務的狀態:
|
1 |
sudo systemctl status mysql.service |
您應該會得到類似於下方螢幕截圖中的輸出結果:

若要停用 MySQL 服務,請輸入以下指令:
|
1 |
sudo systemctl disable mysql.service |
輸出結果表示已從 Systemd 中移除指向 MySQL 服務的符號連結:

您可以輸入以下指令,測試該服務是否已在 Systemd 初始化系統中啟用:
|
1 |
sudo systemctl is-enabled mysql.service |
輸出結果將顯示它已被停用。如果您重新啟動系統,MySQL 將不會在開機時啟動:
![]()
輸入以下指令以啟用該服務:
|
1 |
sudo systemctl enable mysql.service |
輸出結果顯示在 Systemd 初始化中建立的指向 MySQL 服務的符號連結:

當您重新啟動時,MySQL 服務將會自動啟動。
步驟 4:設定 MySQL 在當機後自動啟動
MySQL 已設定為在當機後自動重新啟動。讓我們來看看這個設定在 Systemd 中是如何實現的。Systemd 使用單元檔案(unit files)進行設定。輸入以下指令以在 nano 中開啟 mysql.service 設定檔:
|
1 |
sudo nano /etc/systemd/system/multi-user.target.wants/mysql.service |
輸出結果如下所示:

我們關注的是 Restart 指令。根據定義,如果發生失敗,MySQL 將會重新啟動。Restart 指令定義了 Systemd 中應該發生的情況,就像 Upstart 中的 Respawn 指令一樣。
並非所有服務都有此指令。若要讓服務在當機後自動重新啟動,您隨時可以將 Restart 指令新增至服務設定單元檔案的 [Service] 區塊下方。如果 [Service] 標頭不存在,請新增它。現在,按 Ctrl + X 退出編輯器。
若要模擬當機,請輸入以下指令來尋找 MySQL 的程序 ID(PID):
|
1 |
sudo systemctl status mysql.service |
狀態檢查指令會顯示程序 ID,在我們的範例中是 3555:

輸入以下指令以終止該程序。請將其替換為您在伺服器上取得的程序 ID:
|
1 |
sudo kill -9 3555 |
輸入以下指令以檢查狀態:
|
1 |
sudo systemctl status mysql.service |
輸出結果顯示 MySQL 正在執行,但具有新的程序 ID。這表示它在當機後已自動重新啟動:

結論
在本教學中,我們向您介紹了 Linux 發行版中的三種初始化系統:System V、Upstart 和 Systemd。我們學習了如何使用其中任何一種初始化系統,來設定您持續執行的服務在重新啟動或系統當機後自動啟動。當您需要設定服務時,這應該可以作為您的起點。本系列的第一部分主要是一個動手實作的教學。第二部分更偏向理論,並包含更多關於我們在第一部分中所做內容的細節。。請先不要刪除您的測試伺服器,因為您在第二部分中也會用到它們。
祝運算愉快!
留言
目前尚無留言。成為第一個留言的人吧。