Linuxで「Systemctlコマンドが見つかりません」エラーを修正する方法

「systemctl」コマンドの問題を解決するための簡単な修正と、それに代わるいくつかの効率的な方法の紹介

systemctl Linuxエコシステムの重要なユーティリティであるため、実行しようとすると「systemctl:commandnotfound」エラーが発生することがよくあります。 systemctl 指図。これは、Linuxのすべてのディストリビューションに当てはまるわけではありませんが、サポートされていない古いバージョンのLinuxディストリビューションを使用している場合は、おそらくこのエラーが発生する可能性があります。 systemctl 指図。

発生する問題は非常に一般的な問題であり、簡単に修正できます。したがって、まったく心配する必要はありません。完全なチュートリアルを実行して、すばやく簡単に修正できるようにしてください。

最初に問題を理解してから修正します。

洞察 systemctlsystemd

エラーは systemctl コマンドの場合、このエラーの修正をよりよく理解するために、このコマンドの基本を知っておくとよいでしょう。

systemctl Linuxが提供するコマンドラインユーティリティであり、「」という名前のもう1つのコマンドラインユーティリティを監視および制御するために使用されます。systemd‘。また、「システムマネージャーを検査および制御します。systemd' 効用。

一般的な構文:

systemctl [オプション] [名前]

systemd は、システムの起動時に実行されるプログラムを制御するデーモン、ライブラリ、およびユーティリティのバンドルです。 systemd また、システムアクティビティのジャーナルを開始するなどの重要な仕事を開始することもできます。

このユーティリティは、すべてではないにしてもほとんどのLinuxベースのオペレーティングシステムの中央管理ユーティリティとして機能します。

エラーの根本原因

このエラーの最も可能性の高い原因は、古いバージョンのLinuxディストリビューションを使用していることである可能性があります。古いバージョンの多くは SysV init の代わりに systemd 効用。

systemd ユーティリティは、Linuxが提供するユーティリティのバスケットに最近追加されたものであるため、以前のLinuxバージョンにはありません。 systemctl 機能と監視に互換性があります systemd ユーティリティであり、次のような以前の構成では機能しません SysV初期化 また アップスタート.

使用していない場合 systemd、この場合、このエラーが予想されます。それはそれと同じくらい単純で簡単です。

このエラーは次のように発生する可能性があります。

gaurav @ ubuntu:〜$ sudo systemctl start ufw [sudo] gauravのパスワード:sudo:systemctl:コマンドが見つかりませんgaurav @ ubuntu:〜$ 

ここでは、Ubuntu Fire Wallを起動しようとしました(ufw)を使用して systemctl コマンドを実行し、「systemctl:commandnotfound」エラーが発生しました。

したがって、他の中央管理ユーティリティを使用している現在のLinuxディストリビューションを変更したくない場合は、今何をすべきか systemd?さて、私たちはあなたのためにあなたのための迅速な修正を持っています。それはあなたがあなたの現在のLinuxディストリビューションを維持するだけでなくあなたのエラーをすぐに修正することを可能にするでしょう。

ここで修正を観察しましょう。

「systemctl:コマンドが見つかりません」エラーの修正

最後に、問題の原因と基本的な事実を分析した後、問題の問題の解決策を見てみましょう。

修正1:交換 systemctlサービス 指図

問題のエラーの簡単な修正は、 サービス エラーの代わりにコマンド systemctl 指図。

サービス コマンドは、の実行に役立ちます SystemV init 古いLinuxディストリビューションで使用されているスクリプト。インストールしたくない場合 systemd あなたのシステムのユーティリティ、この修正は確かにあなたのために働くでしょう。

Linuxディストリビューションのサービスとデーモンは、を使用して開始、再起動、または停止できます。 サービス 指図。

The サービス コマンドと systemctl コマンドは同じように機能しますが、ここでの唯一の違いは、システムの正常な実行を担当するユーティリティとのコマンドの互換性です。

見てみましょう サービス イラスト付きのコマンド。

一般的な構文:

sudo service [service_name] [action]

上記の構文では、 [アクション] スペースには次のようなアクションが含まれる場合があります 始める, 止まる, 再起動 また 状態.

同じコマンドを実行して、 ufw を使用したサービス サービス 指図。

sudo service ufw start

出力:

gaurav @ ubuntu:〜$ sudo service ufw start gaurav @ ubuntu:〜$ sudo service ufw status●ufw.service-複雑でないファイアウォールロード済み:ロード済み(/lib/systemd/system/ufw.service;有効;ベンダープリセット:enabアクティブ:月曜日からアクティブ(終了)2020-09-28 11:22:34 IST; 1時間5分前ドキュメント:man:ufw(8)プロセス:333 ExecStart = / lib / ufw / ufw-init start quiet(code = exited、status = 0 / SUメインPID:333(code = exited、status = 0 / SUCCESS)9月28日11:22:34 ubuntu systemd [1]:複雑でないファイアウォールを開始しました。警告:ユニットが開始されてからジャーナルがローテーションされました。ログ出力は不完全

ここでは、 サービス の代わりにコマンドが使用されます systemctl コマンドとそれは絶対にうまくいきました。

もう1つの例を見てみましょう サービス それを正しく理解するためのコマンド。

sudo service apache2 start

出力:

gaurav @ ubuntu:〜$ sudo service apache2 status●apache2.service-ロードされたApacheHTTPサーバー:ロードされました(/lib/systemd/system/apache2.service;有効;ベンダープリセット:ドロップイン:/ lib / systemd / system / apache2.service.d└─apache2-systemd.confアクティブ:月曜日からアクティブ(実行中)2020-09-28 11:22:47 IST; 1時間16分前プロセス:1172 ExecStart = / usr / sbin / apachectl start(code =終了、status = 0 / SUCCEメインPID:1248(apache2)タスク:55(制限:4456)CGroup:/system.slice/apache2.service├─1248/usr / sbin /apache2-kstart├─1249/ usr / sbin /apache2-kstart└─1250/ usr / sbin / apache2 -k start 9月28日11:22:43ubuntu systemd [1]:ApacheHTTPサーバーを起動しています... 9月28日11:22:47ubuntu apachectl [1172 ]:AH00112:警告:DocumentRoot [/ var / www Sep 28 11:22:47 ubuntu apachectl [1172]:AH00558:apache2:確実に検出できませんでした9月28日11:22:47 ubuntu systemd [1]:ApacheHTTPを開始しましたサーバー。gaurav@ ubuntu:〜$ 

私たちは使用しました サービス apache2ユーティリティを起動するコマンド。を使用して 状態 オプションと サービス コマンドは、サービスの現在のステータスを表示します。実行中か停止中(非アクティブ)かを詳細に取得します。

今使用しましょう 止まる を使用してapache2サービスを停止するアクション サービス 指図。

gaurav @ ubuntu:〜$ sudo service apache2 stop gaurav @ ubuntu:〜$ sudo service apache2 status lines 1--1 ... skipping ...●apache2.service-ApacheHTTP Server Loaded:loaded(/ lib / systemd / system / apache2.service;有効;ベンダープリセット:有効)ドロップイン:/lib/systemd/system/apache2.service.d└─apache2-systemd.confアクティブ:月曜日から非アクティブ(デッド)2020-09-28 12 :42:06 IST; 1秒前プロセス:4928 ExecStop = / usr / sbin / apachectl stop(code = exited、status = 0 / SUCCESS)プロセス:1172 ExecStart = / usr / sbin / apachectl start(code = exited、status = 0 / SUCCESS)メインPID :1248(code = exited、status = 0 / SUCCESS)9月28日11:22:43 ubuntu systemd [1]:ApacheHTTPサーバーを起動しています... 9月28日11:22:47ubuntu apachectl [1172]:AH00112:警告:DocumentRoot [/ var / www / html]が存在しません9月28日11:22:47ubuntu apachectl [1172]:AH00558:apache2 ::: 1を使用して、サーバーの完全修飾ドメイン名を確実に判別できませんでした。 'S Sep 28 11:22:47 ubuntu systemd [1]を設定します:ApacheHTTPサーバーを開始しました。

上で説明した詳細な例から、このコマンドの代わりにこのコマンドを使用できると結論付けることができます。 systemctl Linuxディストリビューションの下で他のデーモンとサービスを制御および監視するコマンド。

修正2: systemd パッケージ

場合によっては、 systemd パッケージをインストールすると問題が解決する場合があります。まず、のインストール状況を確認する必要があります systemd システム上のパッケージ。

次のコマンドを使用して、システム上のパッケージを確認します。

sudo dpkg -l | grep systemd

の場合 systemd utiltyはすでにインストールされており、次のような出力が得られます。

gaurav @ ubuntu:〜$ sudo dpkg -l | grep systemd [sudo] gauravのパスワード:ii dbus-user-session 1.12.2-1ubuntu1.2 amd64シンプルなプロセス間メッセージングシステム(systemd --user統合)ii libnss-systemd:amd64 237-3ubuntu10.42 amd64nssモジュールが動的に提供ユーザーとグループの名前の解決iilibpam-systemd:amd64 237-3ubuntu10.42amd64システムとサービスマネージャー-PAMモジュールiilibsystemd0:amd64 237-3ubuntu10.42 amd64systemdユーティリティライブラリiilibsystemd0:i386 237-3ubuntu10.42 i386systemdユーティリティライブラリii networkd-dispatcher1.7-0ubuntu3.3すべてsystemd-networkd接続ステータスのディスパッチャーサービス変更ripython3-systemd 234-1build1 amd64 systemd ii systemd 237-3ubuntu10.42amd64システムおよびサービスマネージャーiisystemd-sysv237-のPython3バインディング3ubuntu10.42amd64システムおよびサービスマネージャー-SysVリンクgaurav @ ubuntu:〜$ 

これに似た出力が得られた場合、それは systemd システムにインストールされています。

インストールされていない場合は、次の方法でインストールできます。

sudo apt-get update
sudo apt-get install systemd

インストールしてもエラーが続く場合は、次のコマンドを使用して再インストールしてみてください。

sudo apt-get install --reinstall systemd

これは、をインストールすることによってあなたの問題を解決します systemd 効用。

結論

このチュートリアルでは、「systemctl:コマンドが見つかりません」を修正する方法を学びました。を使用して安全に結論付けることができます サービス の代わりにコマンド systemctl は良い考えであり、問​​題を非常にうまく解決します。簡単に使用できます サービス チュートリアルに示されている実例を理解した後、コマンドを実行します。