Linux 上のサービスは、構成ファイルを通じて管理されます。サービスの構成ファイルに変更を加えた場合、変更を適用するにはサービスの再起動を開始する必要があります。 サービスを再起動すると、systemd は構成ファイルを再評価し、変更を適用します。
このガイドでは、systemctl を使用して Linux でサービスを再起動する方法を説明します。
注記: このガイドには、Ubuntu 22.04 で実行されるコマンドと手順が含まれています。このコマンドは、systemd サービス マネージャーが付属するディストリビューションでは問題なく機能します。
systemctl restart コマンド
の 再起動 コマンドは基本的にサービスを停止し、再度開始します。サービスまたはユニットが動作していない場合は、再起動コマンドによって動作が開始されます。
restart コマンドでは、サービスにリンクされているプロセスは削除されません。ファイル記述子の例を考えてみましょう。ファイル記述子は、サービスによって開かれたファイルにオペレーティング システムによって割り当てられる、負ではない識別子です。サービスを再起動すると、そのサービスにリンクされたファイル記述子は再起動プロセス中にそこに残ります。
サービスにリンクされているすべてのプロセスをフラッシュしたい場合は、明示的に次のようにする必要があります。 停止 サービスと 始める それをまた。
サービスを再起動する方法
Linux では、次のコマンドを使用してサービスを再起動できます。 sudoシステムctl コマンドラインツールを使用して、 再起動 オプションを選択し、その名前を指定します。一般的な構文を以下に示します。
須藤 systemctl の再起動 [ サービス名 】
必要になるだろう 須藤 サービスを再起動する権限。
たとえば、再起動してみましょう ssh サービス。
須藤 systemctl ssh.service を再起動します複数のサービスを再起動するには、各サービス名を 再起動 スペースを含むコマンド。
須藤 systemctl 再起動 ssh.service smbd.service他の再起動コマンドを次の表に示します。
再起動してみてください | 指定されたサービスを停止または開始しますが、サービスが実行されていない場合は開始しません。 |
リロードまたは再起動 | サポートされているサービスをリロードし、サービスがサポートされていない場合は再起動してアクティブ化します。 |
リロードを試すか再起動を試す | サポートされているサービスをリロードし、サービスがサポートされていない場合は、アクティブ化せずに再起動します。 |
上記のコマンドでは、 。サービス 拡張子はオプションです。
サービスを自動的に再起動する方法
Linux では、サービスが失敗すると、 システムド デフォルトで再起動しました。ただし、多くの場合、サービスを再起動する方法を変更する必要がある場合があります。たとえば、カスタムメイド サービスのデバッグ プロセス中に手動アクションが必要になる場合があります。
systemd ユニット ファイルまたはサービス ファイルは次の場所にあります。 /etc/systemd/システム または /lib/systemd/システム 主にサービスの作成方法に依存します。 Linux でユニット ファイルを一覧表示するには、次のコマンドを使用します。
ls / ライブラリ / システムド / システムさまざまなサービスの構成ファイルを確認できます。開いてみましょう ssh.サービス ファイルを使用して ナノ 編集者。
須藤 ナノ / ライブラリ / システムド / システム / ssh.サービスここで変更できます 再起動 設定。デフォルトでは、次のように設定されています。 障害時 。サービスを再起動するためのその他のオプションを以下に示します。
- いいえ
- いつも
- 成功時
- 障害時
- 異常時
- 中止中
- 監視中
ユニットサービスファイルの別のオプションは次のとおりです。 再起動秒 これは、サービスが再起動されるまでの秒数を指定するために使用されます。
[ サービス 】再起動 =いつも
再起動秒 = 5
これらの手順は、サービスが起動時に再起動され、中断された場合は 5 秒後に再起動されることを意味します。
設定を変更した後、次のコマンドを実行して変更を適用します。
須藤 systemctl リロードデーモン考慮すべきその他の重要な設定は次のとおりです。 StartLimitIntervalSec そして スタートリミットバースト 。これらのオプションは、サービスを再起動するための最大時間と最大再試行を設定するのに役立ちます。
[ ユニット 】StartLimitIntervalSec = 300
スタートリミットバースト = 4
上記の命令は、サービスが 300 秒経過しても 4 回再試行しても開始されない場合、systemd がサービスの再起動を自動的に停止することを示しています。
サービスが 5 秒後に再起動するかどうかを確認するには、サービスの PID と 殺す 指示。
須藤 殺す -9 [ PID 】5 秒後にサービスが再起動されます。使用 ジャーナルctl のステータスを確認するコマンド ssh.サービス 。
ジャーナルctl -で ssh.サービス
依存サービスの再起動時にサービスを再起動する方法
Linux では、多くのサービスが相互に依存しており、同様に、依存するサービスが再起動されると、それらのサービスも再起動する必要があります。
ユニット サービス ファイルには、依存サービスを再起動してサービスを再起動するための 3 つの異なるオプションがあります。
- 一部の
- バインド先
- 必要
これらのオプションはすべて同じタスクを実行します。
apparmor.service に依存する ssh.service の例を見てみましょう。必要なアクセスを提供する Linux セキュリティ モジュール。 Linux でサービスの依存関係を一覧表示するには、次を使用します。 システム制御 と リスト依存関係 コマンドとサービス名。
systemctl リスト依存関係 ssh.service
したがって、apparmor.service を再起動するときに ssh.service も再起動する場合は、apparmor.service ファイルの [Unit] セクションにサービス名とともに PartOf、BindsTo、または Requires オプションを含める必要があります。
apparmor.service ファイルを開きます。
須藤 ナノ / ライブラリ / システムド / システム / apparmor.service[Unit]セクションに次の行を追加します。
一部の =ssh.service
ファイルを保存し、daemon-reload コマンドを実行します。
須藤 systemctl デーモンのリロードさて、再起動してください ssh.サービス そして、それを確認してください apparmor.service ログ。
あなたは気づくでしょう apparmor.service 同時に再起動した ssh.サービス 再開した。
結論
Linux 上でサービスを再起動するには、 システム制御 コマンドは、 再起動 オプション。の システム制御 systemd サービスを管理するために使用されるコマンド ライン ユーティリティです。の 再起動 オプションはサービスを開始してから停止し、非アクティブなサービスをアクティブにします。ただし、サービスをアクティブ化せずに再起動するには、 再起動してみてください オプション。