すべてのプロダクト
Search
ドキュメントセンター

:Linuxインスタンスでsystemctlコマンドを実行したときにエラーが発生した場合はどうすればよいですか?

最終更新日:Aug 20, 2024

ここでは、Linuxインスタンスでsystemctlコマンドを実行したときに発生するエラーの原因と解決策について説明します。

問題の説明

Linuxインスタンスでsystemctlコマンドを実行すると、次のようなエラーが発生することがあります。

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to get D-Bus connection: xxx xxx.

考えられる原因

Systemdは、Linuxシステム上のプロセスを初期化し、そのライフサイクルを管理するために使用される初期化システムおよびサービスマネージャです。 systemctlは、systemdシステムおよびサービスマネージャ用のコマンドラインツールです。 問題の説明でエラーが発生した場合、考えられる原因は次のとおりです。

  • システムはsystemdで初期化されません。

    • 一部の古いLinuxディストリビューションまたは特定の軽量ディストリビューション (Devuan、Alpine Linux、Void Linuxなど) は、systemdの代わりにデフォルトで他の初期化システム (OpenRC、SysVinit、runitなど) を使用する場合があります。 たとえば、Windows Subsystem For Linux (WSL) は、デフォルトでSysVinit初期化システムを使用します。

    • DockerやPodmanなどのコンテナ内でコマンドを実行し、コンテナがsystemdを初期化システムとして使用するように構成されていない場合、このエラーが発生する可能性があります。

  • システムはsystemdを初期化に使用しますが、systemdが破損または誤構成されています。

解決策

  1. Linuxインスタンスに接続します。

    詳細については、「パスワードまたはキーを使用したLinuxインスタンスへの接続」をご参照ください。

  2. 次のコマンドを実行して、システムがsystemdで初期化されているかどうかを確認します。

    ps -p 1 -o comm=
    • 出力は空またはsystemdとは異なる値です: これは、システムがsystemdで初期化されていないことを示します。 現在の初期化システムに対応するサービス管理コマンドを使用します。

      説明

      systemctl関連のスクリプトを使用してアプリケーションを実行する必要がある場合は、systemdをサポートする別のLinuxディストリビューションを使用するか、DockerコンテナでsystemdをサポートするLinuxシステムを実行することをお勧めします。

      たとえば、システムがSysVinit (出力はinit) を使用している場合、systemctlの代わりにserviceコマンドを使用できます。 一般的なコマンドの比較を次の表に示します。

      サービス操作 /コマンド

      SysVinit

      Systemd

      サービスを起動

      sudoサービスservice_name start

      sudo systemctl start service_name

      停止サービス

      sudoサービスservice_name stop

      sudo systemctl stop service_name

      再起動サービス

      sudo service service_name restart

      sudo systemctl restart service_name

      サービスステータスの確認

      sudo service service_nameステータス

      sudo systemctl status service_name

      サービス起動の有効化

      sudo chkconfig service_name on

      sudo systemctl enable service_name

      サービス起動の無効化

      sudo chkconfig service_nameオフ

      sudo systemctl disable service_name

    • 出力はsystemdです。これは、システムがsystemdで初期化されていることを示します。 問題が解決しない場合は、システムの破損または構成の誤りが原因である可能性があります。 それぞれのディストリビューションの公式ガイドラインを参照し、systemdサービスを回復することをお勧めします。