Linux ユーザー、特に Ubuntu のような最新のディストリビューションにとって最も強力で便利なツールの 1 つは、 システムctlコマンド。このコマンドライン ユーティリティは通常、systemd、システム、およびサービス マネージャーと対話するために使用されます。
このコマンドを使用して、システム サービスの管理、ステータスの表示、開始または停止、システム起動時の有効化と無効化を行うことができます。かなり便利ですよね?ただし、systemctl コマンドが見つからないか認識されない場合は、次のような問題に直面することになります。 「sudo:systemctl: コマンドが見つかりません」 エラー。
そこで、「systemctl: command not found」エラーの意味、このエラーが発生するさまざまな理由、およびこのエラーを修正する方法について説明します。
「systemctl: コマンドが見つかりません」とはどういう意味ですか?
簡単に言えば、「systemctl: コマンドが見つかりません」エラーは、現在の環境では systemctl コマンド ライン ユーティリティが利用できない、またはアクセスできないことを意味します。これにはさまざまな理由が考えられますが、いずれも環境が非システム環境であるか、systemd パッケージがシステムにインストールされていないかのいずれかに帰着します。
基本的に、systemd パッケージがインストールされていないか、Linux ディストリビューションまたはバージョンが systemd を使用していません。むしろ、init.d のような古いサービス管理システムを使用します。もう 1 つの可能性は、PATH 環境変数に systemctl が配置されているディレクトリが含まれていない、つまりシェルがそれを見つけられないということです。
「systemctl: command not found」エラーの原因となるシステムの何が問題なのかがわかったので、問題の場所を確認する方法とその解決方法を見てみましょう。
systemctl: コマンドが見つからないエラーの修正
次の手順では、システムに systemd がインストールされており、systemctl を使用しているかどうかを確認し、systemctl のパスを確認します。問題を確認したら、エラーを修正するために必要な手順を実行します。
1. システムが systemd を使用しているかどうかを確認する
Ubuntu systemctl は systemd パッケージがインストールされている場合にのみ使用できるため、最初に次のコマンドを実行して、システムが systemd を使用することになっているかどうかを確認します。
ps -p 1 -o comm=
または、次のコマンドを使用して systemd のバージョンを確認できます。
systemd --version
出力が systemd の場合、systemd は init システムであり、Ubuntu systemctl がインストールされている必要があります。ただし、出力が init または別のプロセス マネージャーである場合は、システムが代替の初期化システムを使用していることを意味し、systemd に移行しない限り systemctl は機能しません。
Upstart や SysVinit などの古い初期化システムが表示され、systemd に切り替えて systemctl を使用したい場合は、次の手順に従います。
1. 次のコマンドを使用して systemd をインストールし、systemctl をインストールします。
sudo apt install systemd-sysv
2. 次のコマンドを実行してシステムを再起動します。
sudo reboot
3. システムが systemd を使用していることを確認します。
ps -p 1 -o comm=
出力は systemd になるはずです。
2. systemd が正しくインストールされていることを確認する
通常の状況では、systemd がインストールされ、init システムとして実行されている場合、systemctl コマンドは正しく機能するはずです。そうでない場合は、systemd パッケージが見つからないか、不適切にインストールされていることを意味します。
Docker コンテナーやクラウド インスタンスなどの最小バージョンの Ubuntu を使用している場合、デフォルトでは systemd がインストールされていない可能性があることに注意してください。 systemd のインストールを通じて systemctl をインストールするには、次のコマンドを実行します。
sudo apt update sudo apt install systemd
インストールしたら、systemctl コマンドが使用できるかどうかを確認します。
3.systemctlのPATHの確認
systemctl が見つからないエラーに関する一般的な問題の 1 つは、systemctl がインストールされているにもかかわらず、システムの PATH にないことです。 systemd バイナリが、/bin、/usr/bin、/usr/local/bin などの一般的なディレクトリに存在するかどうかを確認するには、次のコマンドを使用できます。
which systemctl
PATH にリストされているディレクトリのいずれかで systemctl が見つかった場合は、次のような出力が得られます。
/usr/bin/systemctl
PATH 内のどのディレクトリにも systemctl が見つからない場合、while コマンドは何も返しません。
ただし、systemctl がディレクトリ内に存在する場合でも、まだ機能しない可能性があります。これは、systemctl が PATH に含まれていないディレクトリにある可能性があるためです。この状況では、次のコマンドを使用して、systemctl が配置されているディレクトリがシステムの一部であるかどうかを確認する必要があります。
echo $PATH
出力は次のようになります。
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ここで、あなたがしなければならないのは、systemctl が存在するディレクトリ (what コマンドで取得したもの) が、echo $PATH コマンドの出力にリストされているディレクトリに含まれているかどうかを確認することだけです。
systemctl のディレクトリが echo $PATH の出力に含まれていない場合は、それを PATH 変数に追加する必要があります。これを行うには、次のコマンドを実行する必要があります。
のために Bash シェルのユーザー、テキスト エディターで ~/.bashrc ファイルを開きます。
nano ~/.bashrc
ファイルの最後に次の行を追加します。
export PATH=$PATH:/usr/bin
/usr/bin は、この例では systemctl が配置される一般的なディレクトリです。
ここで、CTRL + X を押してファイルを保存して閉じ、次に Y を押して確認し、Enter を押して保存します。
のために Zsh ユーザー, テキスト エディターで ~/.zshrc ファイルを開きます。
nano ~/.zshrc
ファイルの最後に次の行を追加します。
export PATH=$PATH:/usr/bin
/usr/bin は、この例では systemctl が配置される一般的なディレクトリです。
ここで、CTRL + X を押してファイルを保存して閉じ、次に Y を押して確認し、Enter を押して保存します。
上記の手順が完了したら、echo $PATH コマンドを使用して、systemctl のディレクトリが PATH に追加されているかどうかを確認します。これで、「systemctl: コマンドが見つかりません」エラーが発生することなく、systemctl を実行できるようになります。
4.systemdの再インストール
以前の修正が機能せず、依然としてコマンドが見つからないエラーが発生する場合は、systemd を完全に再インストールすると問題が解決する可能性があります。これを行うには、次のコマンドを実行します。
sudo apt purge systemd sudo apt install systemd
次に、次のコマンドを使用してシステムを再起動します。
sudo reboot
systemctl が機能するかどうかを確認します。
5. systemd が正しく構成されていることの確認
場合によっては、この問題は、systemd のインストールの設定が間違っているなどの単純なものである可能性があり、その結果「systemctl: コマンドが見つかりません」エラーが発生します。この問題を解決するには、次のコマンドを実行するだけで完了です。
sudo dpkg-reconfigure systemd
6. 時代遅れの Linux 用 Windows サブシステム (WSL)
Ubuntu を以下の環境で使用している可能性があります。 WSL (Linux 用 Windows サブシステム) WSL 1 などの古いバージョンの WSL は systemctl をネイティブにサポートしていないため、以前のどの修正を使用しても systemctl を実行できないことを知っておく必要があります。
systemctl の機能を利用したい場合は、systemd のサポートが強化された WSL 2 にアップグレードする必要があります。 WSL を使用しているかどうか不明な場合は、次のコマンドを使用して確認できます。
uname -a
出力に WSL が記載されている場合、「systemctl: command not found」エラーが表示されるのはそのためです。
7. systemctl の代わりに sudo サービスを使用する
システムが systemd を使用していないために「systemctl: コマンドが見つかりません」エラーが発生した場合は、sudo service コマンドを使用してサービスを管理できます。このコマンドは、SysVinit や Upstart などの古い init システムで動作します。これは、systemd ではなく init スクリプトに依存する Ubuntu システムに役立ちます。
たとえば、サービスを開始するには、次を実行します。
sudo service <service_name> start
最終的な考え
systemd とその systemctl コマンドライン ユーティリティは、SysVinit や Upstart などの他の古い init システムのほとんどを置き換えました。 systemd は、そのモノリシックな設計と非 Unix 哲学のため、誰もが init システムを好むわけではありませんが、一般的には依然として一般的な選択肢とみなされています。したがって、systemd のコマンドライン ユーティリティを使用できないとその機能が大幅に制限されるため、systemctl コマンドが利用できないというエラーを解決できたことを願います。
よくある質問
systemctl とは何ですか? systemctl: コマンドが見つかりませんの意味は何ですか?
systemctl は、Ubuntu などの systemd を実行している Linux システムでサービスを管理するために使用されるコマンドライン ツールです。 「systemctl: コマンドが見つかりません」エラーは、ツールが利用できない、またはアクセスできない場合に発生します。通常は、システムが systemd を使用していないか、systemd パッケージがインストールされていないことが原因です。
systemctl はすべてのバージョンの Ubuntu で利用できますか?
いいえ、systemctl はすべてのバージョンの Ubuntu で使用できるわけではありません。 systemctl は systemd init システムの一部であり、最新の Ubuntu バージョン (15.04 以降) のデフォルトです。古いバージョンまたは特定の最小限のインストールでは、代わりに SysVinit や Upstart などの代替 init システムが使用される場合があります。