診斷卡在 systemd 關閉螢幕的 SUSE 伺服器

如果 SUSE Linux Enterprise Server 在 systemd 關閉過程中掛起,請找出正在執行停止作業的單元,或檢查上次啟動的最後訊息,然後修復該單元或其相依性。單元是指 systemd 管理的資源,例如服務或掛載點;停止作業是 systemd 請求關閉某個單元的指令。不要先嘗試降低全域逾時時間或強制斷電,因為服務或檔案系統可能仍在關閉檔案或寫入資料。

本演練遵循 2026 年 10 月查閱的 SLES 15 SP7 文件。具體的停止策略取決於服務和儲存供應商,因此請根據他們的指導進行任何特定於設備的變更。

1. 安全觀察關機過程

第一步:記錄確切的訊息,並等待有用的證據。

如果控制台顯示「正在執行停止作業,等待…」並附有倒數計時,請記下指定的服務或掛載點以及倒數計時是否有變更。這表示 systemd 正在等待該單元的停止操作,並不一定意味著作業系統崩潰;資料庫和遠端儲存可能需要一些時間才能正常關閉。

範例 Linux 控制台顯示了一個範例服務的關閉停止作業訊息和倒數計時。
一個範例控制台訊息會顯示 systemd 正在等待的單元名稱;顯示的服務和倒數計時僅供參考。

透過遠端控制台、串列埠控制台或其他可用終端進行觀察。寫入操作進行期間,請避免執行重設或電源指令。如果系統停止回應,請記錄最後可見的一行,並在系統啟動後繼續操作。

2. 找到正在等待的單元

步驟 2:檢查 systemd 作業,確認機器是否仍接受指令

如果 SSH 或第二個終端仍然有效,請詢問 systemd 哪些作業正在運作或等待,然後檢查螢幕上顯示的單元名稱:

sudo systemctl list-jobs
sudo systemctl status SERVICE.service
以下是使用 systemctl list-jobs 指令停止 example.service 作業的終端輸出範例,目前處於運作狀態。
作業清單可以辨識出仍在執行停止操作的服務;所示行就是一個範例。

請替換SERVICE為實際的單元名稱。正在執行的停止作業可以縮小搜尋範圍,但無法解釋為何進程沒有退出。更改配置前,請先查看其狀態和日誌。如果 systemd 不再回應,請勿盲目取消作業;主機復原後,請檢查先前的日誌。

3. 利用之前的啟動情況來確定原因

步驟 3:閱讀前一個靴子日誌的結尾部分。

日誌是 systemd 的核心、服務和系統訊息的索引日誌。下次成功啟動後,列出已記錄的啟動程序並檢查上一次啟動的結尾:

sudo journalctl --list-boots
sudo journalctl -b -1 -e
範例終端機執行 journalctl boot-list 指令,顯示上次啟動結束時的關閉訊息。
偏移-1量選擇上一個啟動項,並-e移至其最近的條目。

尋找最後一條「正在停止」訊息、逾時、重試記錄或指定的設備或掛載點。最後一行只是一個線索:關機順序可能會導致後面還有其他設備等待。比較時間戳記和附近的訊息。

步驟 4:篩選可疑服務的日誌

當螢幕或日誌中出現服務名稱時,僅查詢該單元先前啟動的條目。同時檢查其已載入的配置:

sudo journalctl -b -1 -u SERVICE.service --no-pager
sudo systemctl cat SERVICE.service
範例終端過濾之前的啟動日誌,例如服務停止訊息
按單元篩選有助於將緩慢的服務關閉與日誌中其他不相關的訊息區分開來。

檢查是否存在自訂腳本ExecStop、無限期等待的腳本、未關閉的子進程或應用程式關閉鉤子中的錯誤。對於供應商提供的單元,請在編輯前將軟體包和配置與官方指南進行比較。

第五步:僅當證據指向安裝點和儲存位置時才檢查它們。

如果日誌中提到了掛載點、裝置或遠端檔案系統,請檢查掛載表以及以下位置的符合條目/etc/fstab:

sudo findmnt --verify --verbose
範例終端運行 findmnt 驗證,以檢查掛載條目和選項
當日誌暗示存在掛載時,請使用掛載驗證;顯示的條目僅供參考,必須與主機進行核對。

檢查 NFS、CIFS、iSCSI 或其他遠端相依性在關機期間是否可存取且符合預期。僅在確認不再使用後才刪除過時的掛載點。不要僅因重啟緩慢而強制卸載正在運行的檔案系統。

4. 找出並解決根本原因,不要掩蓋。

步驟 6:修復服務或僅調整其已記錄的停止策略

對於無法啟動的服務,請先修復其關閉腳本、應用程式設定或軟體包問題。每個單元的替換配置無需編輯供應商文件sudo systemctl edit SERVICE.service即可儲存。 SUSE 文件中提供了服務啟動或停止的說明;請為此工作負載使用供應商認可的值。/etc/systemd/system/TimeoutSec

範例 systemd 服務插入式編輯器,顯示了「服務」部分以及使用供應商批准的逾時設定的說明。
單元插入可以包含有針對性的覆蓋;顯示的註釋是指導,不是超時值。

完成已記錄的編輯後,使用 `systemd -r` 指令重新載入 systemd 的單元定義sudo systemctl daemon-reload,並使用 `systemd -r` 指令檢查結果sudo systemctl cat SERVICE.service。較長的超時時間可以讓正常的關機完成,但也可能延長失敗的重新啟動時間。較短的超時時間可能會在服務刷新狀態之前將其終止。不要為了掩蓋某個單元的缺陷而更改全域預設值。

步驟 7:保存日誌以備下次事件發生時使用。

/run/log/journal/SLES預設將日誌資料儲存在某個位置,該暫存目錄會在重新啟動時清除。如果journalctl -b -1目錄沒有任何先前的啟動記錄,請啟用持久性日誌儲存以便將來進行診斷:

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix=/var/log/journal
sudo journalctl --flush
範例終端建立持久日誌目錄、設定其權限並刷新日誌
這些命令會在重新啟動後保留新的日誌條目;但它們無法從易失性儲存中恢復已遺失的日誌。

持久性日誌會佔用檔案系統空間/var;SUSE 指出,預設情況下,日誌可能會佔用該檔案系統高達 10% 的空間。請檢查可用空間和保留策略,尤其是在小/var卷上。

5. 確認下次計畫重啟時間

步驟 8:確認停止操作已完成,伺服器已恢復運作

一旦疑似問題原因得到解決,安排一次可控重啟,並確保控制台存取權限可用。機器重新啟動後,檢查上次啟動的最後訊息,並確認服務的當前狀態:

sudo journalctl -b -1 -e
sudo systemctl status SERVICE.service
範例終端顯示了上次啟動時已完成的範例服務停止以及目前的服務狀態檢查。
稍後重新啟動後,驗證先前的關機是否已完成所有訊息,服務是否恢復正常;這是一個範例視圖,並非測試證據。

當伺服器在未等待相同單元的情況下關機、正常啟動且服務或掛載點正常運作時,問題即可解決。如果日誌突然結束或顯示核心、控制器或硬體錯誤,請保留日誌並與 SUSE 或硬體供應商聯繫進行調查,而不是調整逾時設定。

有關命令詳情,請參閱SLES 15 SP7 systemd 指南和 SUSE 的持久日誌和 journalctl 過濾器指南。這些步驟可以識別可能的阻塞因素;正確的服務、檔案系統或硬體修復方案取決於機器本身日誌中指定的單元。

留下評論

診斷卡在 systemd 關閉螢幕的 SUSE 伺服器

診斷卡在 systemd 關閉螢幕的 SUSE 伺服器

使用 systemd 作業和先前的啟動日誌來尋找運行緩慢的服務、掛載點或儲存依賴項,然後修正它,而不掩蓋原因。

僅開放 SLES 15 伺服器所需的網路流量

僅開放 SLES 15 伺服器所需的網路流量

使用 firewall-cmd 檢查活動區域,安全地允許 HTTP,保留 SSH 訪問,並驗證該規則在 SLES 15 上重新加載後是否仍然存在。

診斷 SLES PAM 登入失敗問題,避免被鎖定

診斷 SLES PAM 登入失敗問題,避免被鎖定

追溯 PAM 故障到其服務、帳戶原則或身分提供者,然後在保持管理員會話正常運作的情況下修復正確的 SLES 配置。

在 ONLYOFFICE 文件伺服器中新增字型:Docker 與 Linux

在 ONLYOFFICE 文件伺服器中新增字型:Docker 與 Linux

在 ONLYOFFICE 文件伺服器中安裝自訂字體,比較持久 Docker 掛載與直接複製,重建字體列表,並驗證結果。

使用 Restic 和 Cron 實現 Nextcloud 的自動化和一致性備份

使用 Restic 和 Cron 實現 Nextcloud 的自動化和一致性備份

將 Nextcloud 的檔案和 MariaDB 一起備份,使用 cron 安排加密的 Restic 快照,並在不危及執行伺服器的情況下驗證復原。

使用 TGZ Exports 備份和還原 Zimbra CE 郵箱

使用 TGZ Exports 備份和還原 Zimbra CE 郵箱

匯出單一 Zimbra Community Edition 信箱,驗證其 TGZ 備份,並在不覆寫現有郵件的情況下還原遺失的項目。

允許已批准的使用者使用 Keycloak 登入建立 Jitsi 會議室

允許已批准的使用者使用 Keycloak 登入建立 Jitsi 會議室

僅允許已批准的帳戶使用 Keycloak 和令牌身份驗證啟動 Jitsi Meet 會議室,同時在需要時允許訪客加入。

透過 LDAP 將 Active Directory 使用者與 ONLYOFFICE DocSpace 同步。

透過 LDAP 將 Active Directory 使用者與 ONLYOFFICE DocSpace 同步。

將 ONLYOFFICE DocSpace 連接到 Active Directory 或 OpenLDAP,安全地匯入使用者和群組,映射帳戶字段,並安排可靠的同步。

在 SLES 15 安全啟動上安裝和簽署自訂核心模組

在 SLES 15 安全啟動上安裝和簽署自訂核心模組

在不停用安全啟動的情況下載入自訂 SLES 15 核心模組。匹配正在運行的內核,對 .ko 檔案進行簽名,註冊 MOK 金鑰,並驗證載入情況。

將 ONLYOFFICE Docs 置於 HAProxy 之後而不影響編輯功能

將 ONLYOFFICE Docs 置於 HAProxy 之後而不影響編輯功能

為 ONLYOFFICE Docs 設定 HAProxy HTTPS、轉送標頭、WebSocket 逾時和執行狀況檢查,然後驗證編輯和儲存功能。