「サービスの再起動」と「サービスのリロード」の違いは何ですか


74

との違いを理解しようservice restart [someservice]としていservice reload [someservice]ます。「再起動」はサービスを再起動し、「再読み込み」は設定を再読み込みすることを理解していますが、特定のコンテキストでどちらを使用するかを決定するのに十分な実用的な意味を十分理解していません。

例:PostgreSQLのセットアップについて読んだほとんどのガイドは、postgresql.confとpg_hba.confを編集してリモート接続を許可したら、を発行する必要があると言っていsudo service postgresql restartます。ただし、上記の説明に基づいてどちらを使用するかを推測している場合は、「リロード」を選択します。

それが重要な場合、私はUbuntu 11.10を使用していますが、できるだけ一般的に適用できる説明を期待しています。


2
数年前、私は数千のユーザーでサーバーを実行していました。Apacheの再起動は、何らかの理由で高速ではなく、apache(reasons)を再起動するのに約3分かかります。とにかく、サーバーが3分間ダウンした場合、上司は約800の電話を受けることになります。サービスをリロードすると、0回の電話がかかります。それが違いです。
-j0h

回答:


41

あなたが言ったことは正しいですreload、構成ファイルをリロードするようにサービスに伝えます。つまり、構成を再ロードするのに十分なはずです。ただし、「ルールに従わない」サービスや、構成ファイルをリロードしないサービスが存在する場合があります。このため、おそらくの方が安全ですrestart。私は個人的には使用しないpostgresqlので、わかりません。


1
一方、あるreload-or-restart
スウギ

PostgreSQLの場合、リロードで/etc/postgresql/version/main/postgresql.confに変更を適用できます。pg_hba.confに変更を適用するには、再起動が必要です。
エイダンメレン

63
  • 再起動 =停止+開始
  • reload =実行中のまま+設定ファイルを再読み込みします。

8

すべてのサービスがサポートするわけではありませんreload。そのような場合は、通常、再起動することをお勧めします(つまり、リロードするとダウンタイムが少なくなるか、まったくなくなります)。

Debianポリシーマニュアルでは、すべての/etc/init.d/スクリプトがforce-reloadアクションをサポートする必要があると規定されています。つまりreload、サービスがアクションをサポートしている場合、およびrestartサービスがリロードをサポートしていない場合です。

それがどのように現代のUbuntuの新興企業の世界に変換されるのか分かりません。


1
Debianポリシーマニュアルは本当に便利なリンクでした、ありがとう。
パッチではない14

1
システムサービスを介していない場合、ほとんどがリロードをサポートし、
etc / init.d / SomeProgram

4

systemdでの私の経験でعبدالنورالتوميの答えを拡張するには。

systemdでは、プロセスが開始されるたびにsystemdコンテキスト内で実行されます。これの最も明確な例は、ユニットファイルで定義された環境変数を使用する場合です。

そのため、systemctl reload [someservice]シグナルを送信すると、サービスにシグナルが送信され、サポートされている場合は適切にリロードされます。そうでない場合、プロセスは単にシグナルを無視します。ただし、これは構成可能です。

私は優雅にとはどういう意味ですか?新しい構成またはコードを使用して新しいワーカーを開始し、古いワーカーが現在の要求の処理を終了したら停止します。

そして、それを作成systemctl restart [someservice]すると、systemctlにサービスを停止するように指示し、現在のsystemdコンテキストを破棄し、新しいコンテキストを作成して、サービスを再度実行します。これは、たとえばsystemdコンテキストで環境変数をリロードする場合、またはリロードがサポートされていない場合に意味があります。

これが少し明確になり、私が何か間違っている場合はお知らせください。


0

現在、サービスを起動する必要がある場合(たとえば、構成ファイルを変更した場合)、サービスに通知できますが、これにより再起動が行われます。サービスが既に実行されている場合にリロードが行われると便利です(ただし、一部のファイルの再起動、他のファイルのリロードが必要なサービスがあるはずです)。

私が考えることができる最も複雑な例は、Apacheのようなものです。通常はリロードするように要求できますが、代わりに再起動を要求する必要がある場合があります(たとえば、モジュールを追加/削除する場合)。


0

postgresはリロードと再起動の大きな違いの良い例です。後者はすべてのデータベースクライアントを切断する必要があるためです。

接続がロールバックしない場合、最初にpg_ctlclusterを使用して、「-force」なしでサービスを停止できます。

/etc/postgres/{version}/{dbname}/postgresql.confとでhttp://www.postgresql.org/docs/manuals/すべてのパラメータ「このパラメータはサーバ起動時のみ設定可能のような発言を持っています。 」

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.