systemdシャットダウン画面でハングアップするSUSEサーバーを診断する

systemd のシャットダウン中に SUSE Linux Enterprise Server がハングアップする場合は、停止ジョブが実行中のユニットを特定するか、前回の起動時の最終メッセージを確認してから、そのユニットまたはその依存関係を修正してください。ユニットとは、サービスやマウントなど、systemd が管理するリソースのことです。停止ジョブとは、systemd がユニットをシャットダウンするよう要求するものです。サービスやファイルシステムがまだファイルを閉じたり、データを書き込んだりしている可能性があるため、最初の解決策としてグローバルタイムアウトを短くしたり、強制的に電源を切ったりしないでください。

この手順は、2026年10月に検証されたSLES 15 SP7のドキュメントに基づいています。正確な停止ポリシーはサービスおよびストレージベンダーによって異なるため、ユニット固有の変更については、各ベンダーのガイダンスを参照してください。

1. 安全にシャットダウンを監視する

ステップ1:正確なメッセージを記録し、有用な証拠を待つ

コンソールに「停止ジョブが実行中です…」というメッセージとカウントダウンが表示された場合は、サービス名またはマウント名とタイマーの変化を記録してください。これは、systemd がそのユニットの停止操作を待機していることを意味するものであり、必ずしも OS がクラッシュしたことを意味するものではありません。データベースやリモートストレージは、正常に終了するまでに時間がかかる場合があります。

Linuxコンソールの例:サービス停止時のシャットダウンメッセージとカウントダウンを表示
コンソールメッセージの例は、systemdが待機しているユニット名を示しています。表示されているサービスとカウントダウンは例示です。

リモートコンソール、シリアルコンソール、または利用可能な別の端末を通して監視してください。書き込み処理中は、リセットコマンドや電源コマンドを使用しないでください。システムが応答しなくなった場合は、最後に表示された行を記録し、システムが起動してから作業を再開してください。

2. 待機中のユニットを見つける

ステップ2:systemdジョブを検査し、マシンがまだコマンドを受け付けているかどうかを確認します。

SSHまたは別の端末がまだ機能している場合は、systemdに実行中または待機中のジョブを問い合わせ、画面に表示されているユニット名を確認してください。

sudo systemctl list-jobs
sudo systemctl status SERVICE.service
systemctl list-jobs コマンドのターミナル出力例(例えば、実行中のサービスに対する停止ジョブを含む)
ジョブリストでは、停止操作がまだ実行中のサービスを特定できます。表示されている行はその一例です。

実際のユニット名に置き換えてください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、無期限に待機するスクリプト、残存する子プロセス、またはシャットダウンフックにおけるアプリケーションエラーがないか確認してください。ベンダー提供の製品については、編集前にパッケージと構成をサポート対象のガイダンスと比較してください。

ステップ5:証拠がそれを示している場合にのみ、マウントと保管場所を確認する。

ジャーナルにマウント、デバイス、またはリモートファイルシステムの名前が記載されている場合は、マウントテーブルと一致するエントリを調べます/etc/fstab。

sudo findmnt --verify --verbose
findmnt検証を実行してマウントエントリとオプションを確認する、ターミナルの例
ログにマウントが関係していることが示唆される場合は、マウント検証を使用してください。表示されるエントリは例示であり、ホストと照合して確認する必要があります。

シャットダウン中に、NFS、CIFS、iSCSI、またはその他のリモート依存関係にアクセス可能で、かつ想定どおりの状態であるかどうかを確認してください。不要になったマウントエントリは、使用されていないことを確認してから削除してください。再起動が遅いという理由だけで、稼働中のファイルシステムを強制的にアンマウントしないでください。

4. 原因を隠さずに解決する

ステップ6:サービスを修復するか、文書化された停止ポリシーのみを調整する

終了しないサービスについては、まずシャットダウン スクリプト、アプリケーション構成、またはパッケージの問題を修正してください。ベンダー ファイルを編集せずに、ユニットごとのドロップイン がsudo systemctl edit SERVICE.service保存されます。サービスの開始または停止については、SUSE のドキュメントを参照してください。このワークロードには、ベンダーが承認した値を使用してください。/etc/systemd/system/TimeoutSec

systemdサービスドロップインエディタの例。サービスセクションと、ベンダー承認済みのタイムアウトを使用するようにという注記を示しています。
ユニットのドロップインには、対象を絞ったオーバーライドを設定できます。表示されている注記はガイダンスであり、タイムアウト値ではありません。

ドキュメント化された編集後、systemd のユニット定義を で再読み込みしsudo systemctl daemon-reload、 で結果を確認してくださいsudo systemctl cat SERVICE.service。タイムアウトを長くすると、正当なシャットダウンが完了するかもしれませんが、失敗した再起動も長引く可能性があります。タイムアウトを短くすると、サービスが状態をフラッシュする前に終了してしまう可能性があります。特定のユニットの欠陥を隠すために、グローバルなデフォルト設定を変更しないでください。

ステップ7:次のインシデントに備えてログを保存する

SLESはデフォルトでジャーナルデータを以下のディレクトリに保存します/run/log/journal/が、この揮発性ディレクトリは再起動時にクリアされます。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:停止が完了し、サーバーがサービスに戻ったことを確認します。

疑われる原因が修正されたら、コンソールアクセスが可能な状態で、制御された再起動を1回スケジュールしてください。マシンが起動したら、前回の起動時の最終メッセージを確認し、サービスの現在の状態をチェックしてください。

sudo journalctl -b -1 -e
sudo systemctl status SERVICE.service
前回の起動時に完了したサービス停止の例と、現在のサービスステータスチェックを示すターミナル画面。
後で再起動した後、前回のシャットダウン処理が最終メッセージに到達し、サービスが再び正常であることを確認してください。これは表示例であり、テスト結果ではありません。

サーバーが同じユニットを待機せずにシャットダウンし、正常に起動し、サービスまたはマウントが正常に動作する場合、問題は解決します。ログが突然終了したり、カーネル、コントローラー、またはハードウェアのエラーが表示された場合は、タイムアウトを調整するのではなく、ログを保存してSUSEまたはハードウェアベンダーに調査を依頼してください。

コマンドの詳細については、SLES 15 SP7 systemd ガイドおよび SUSE の永続ジャーナルと journalctl フィルタに関するガイドを参照してください。これらの手順により、考えられる障害を特定できます。適切なサービス、ファイルシステム、またはハードウェアの解決策は、マシンのログに記録されているユニットによって異なります。

コメントを残す

systemdシャットダウン画面でハングアップするSUSEサーバーを診断する

systemdシャットダウン画面でハングアップするSUSEサーバーを診断する

systemdジョブと前回の起動ジャーナルを使用して、遅いサービス、マウント、またはストレージの依存関係を特定し、原因を隠蔽することなく修正します。

SLES 15サーバーに必要なWebトラフィックのみを許可する

SLES 15サーバーに必要なWebトラフィックのみを許可する

firewall-cmd を使用してアクティブゾーンを検査し、HTTP を安全に許可し、SSH アクセスを維持し、SLES 15 でルールが再読み込み後も有効であることを確認します。

ロックアウトせずにSLES PAMログイン失敗を診断する

ロックアウトせずにSLES PAMログイン失敗を診断する

PAMの障害が発生した原因を、サービス、アカウントポリシー、またはIDプロバイダーに特定し、正常に動作する管理者セッションを維持しながら、適切なSLES構成を修復します。

SLES 15セキュアブートにカスタムカーネルモジュールをインストールして署名する

SLES 15セキュアブートにカスタムカーネルモジュールをインストールして署名する

セキュアブートを無効にせずに、カスタムSLES 15カーネルモジュールをロードします。実行中のカーネルと一致させ、.koファイルに署名し、MOKキーを登録し、ロードが成功したことを確認します。

ResticとCronを使用して、Nextcloudのバックアップを自動化し、一貫性を保つ

ResticとCronを使用して、Nextcloudのバックアップを自動化し、一貫性を保つ

NextcloudのファイルとMariaDBをまとめてバックアップし、cronを使って暗号化されたResticスナップショットをスケジュール設定し、稼働中のサーバーにリスクを負わせることなく復旧を検証します。

TGZエクスポートを使用してZimbra CEメールボックスをバックアップおよび復元する

TGZエクスポートを使用してZimbra CEメールボックスをバックアップおよび復元する

Zimbra Community Editionの個々のメールボックスをエクスポートし、そのTGZバックアップを検証し、既存のメールを上書きすることなく、不足しているアイテムを復元します。

OSTreeベースの不変システムとしてDebianデスクトップを構築する方法

OSTreeベースの不変システムとしてDebianデスクトップを構築する方法

システムツリーの準備、ブート統合、デプロイメントチェック、ロールバックなど、仮想マシン上でDebianベースのOSTreeデスクトップを作成およびテストする方法を学びます。

承認されたユーザーがKeycloakサインインを使用してJitsiルームを作成できるようにする

承認されたユーザーがKeycloakサインインを使用してJitsiルームを作成できるようにする

Keycloakとトークン認証を使用してJitsi Meetルームを開始できるのは承認済みのアカウントのみとし、必要に応じてゲスト参加も可能にする。

Active DirectoryユーザーをLDAP経由でONLYOFFICE DocSpaceと同期する

Active DirectoryユーザーをLDAP経由でONLYOFFICE DocSpaceと同期する

ONLYOFFICE DocSpaceをActive DirectoryまたはOpenLDAPに接続し、ユーザーとグループを安全にインポートし、アカウントフィールドをマッピングし、信頼性の高い同期をスケジュールします。

ONLYOFFICEドキュメントサーバーにフォントを追加する:DockerとLinuxの比較

ONLYOFFICEドキュメントサーバーにフォントを追加する:DockerとLinuxの比較

ONLYOFFICE Document Serverにカスタムフォントをインストールし、永続的なDockerマウントと直接コピーを比較し、フォントリストを再構築して、結果を検証します。