Quelle est la différence entre «redémarrage du service» et «rechargement du service»


74

J'essaie de comprendre la différence entre service restart [someservice]et service reload [someservice]. Je comprends que "redémarrer" redémarre le service alors que "reload" recharge la configuration, mais je ne comprends pas suffisamment les implications pratiques de cette opération pour déterminer celle que je devrais utiliser dans un contexte donné.

Un exemple: la plupart des guides que j'ai lus pour configurer PostgreSQL disent que, une fois que j'ai édité postgresql.conf et pg_hba.conf pour autoriser les connexions distantes, je devrais le publier sudo service postgresql restart. Cependant, si je devinais lequel utiliser en me basant sur la description ci-dessus, je choisirais "recharger".

Au cas où cela importerait, je suis sur Ubuntu 11.10 - bien que j'espère une explication aussi générale que possible.


2
Il y a quelques années, j'utilisais un serveur avec plusieurs milliers d'utilisateurs. redémarrer Apache n’était pas rapide pour une raison quelconque, il faudrait environ 3 minutes pour redémarrer Apache (raisons). Quoi qu'il en soit, si le serveur était en panne pendant 3 minutes, mon patron recevrait environ 800 appels téléphoniques. Avec le rechargement du service, 0 appels téléphoniques. C'est la différence.
j0h

Réponses:


41

Ce que vous avez dit est correct, reloadindique au service de recharger ses fichiers de configuration. Cela signifie qu'il devrait suffire de recharger la configuration; Cependant, il se peut que certains services "ne suivent pas la règle" ou ne rechargent pas les fichiers de configuration. Pour cette raison, vous êtes probablement plus en sécurité avec restart. Personnellement, je n'utilise pas postgresql, donc je ne sais pas.


1
Pendant ce temps, il y areload-or-restart
Suuuehgi

Pour PostgreSQL, vous pouvez appliquer des modifications au fichier /etc/postgresql/version/main/postgresql.conf avec un rechargement. L'application des modifications à pg_hba.conf nécessite un redémarrage.
Aidan Melen

63
  • redémarrer = arrêter + démarrer
  • reload = rester en cours d'exécution + relire les fichiers de configuration.

8

Tous les services ne prennent pas en charge reload. Pour ceux qui le font, il est généralement préférable de redémarrer (c.-à-d. Que le rechargement cause moins de temps d'arrêt, voire aucun temps d'immobilisation).

La charte Debian précise que chaque /etc/init.d/script doit prendre en charge une force-reloadaction, ce qui signifie reloadque le service la prend en charge et restartque le service ne prend pas en charge le rechargement.

Je ne sais pas comment cela se traduit dans le monde moderne d'Ubuntu.


1
La charte Debian était un lien très utile, merci.
pas un patch

1
la plupart des utilisateurs ont besoin de recharger, si ce n’est par le service système, pensait /etc/init.d/SomeProgram reload
j0h

4

Pour développer عبد النور التومي répondre à mon expérience avec systemd.

Dans systemd, chaque fois qu'un processus est démarré, il est exécuté dans le contexte systemd. L'exemple le plus clair est celui des variables d'environnement définies dans son fichier d'unité.

Ainsi, lorsque vous envoyez un systemctl reload [someservice]signal, il envoie un signal au service pour qu'il se recharge correctement s'il est pris en charge. Sinon, le processus ignorera simplement le signal. Ceci est configurable si.

Qu'est-ce que je veux dire avec gracieusement? pour démarrer de nouveaux employés avec la nouvelle configuration ou le nouveau code et arrêter les anciens employés à la fin du traitement des demandes actuelles, le cas échéant.

Et si vous dites que systemctl restart [someservice]cela va dire à systemctl de dire au service de s’arrêter, de détruire le contexte systemd actuel, d’en créer un nouveau et de relancer le service. Cela a du sens, par exemple, de recharger des variables d’environnement dans un contexte systemd ou si un rechargement n’est pas pris en charge.

J'espère que cela clarifie un peu et si je me trompe, veuillez me le faire savoir.


0

actuellement, si un service nécessite un coup de pied (par exemple, un fichier de configuration modifié), vous pouvez le notifier, mais cela entraîne un redémarrage. Ce serait bien si un rechargement était effectué si le service était déjà en cours d'exécution (bien que je suppose qu'il y ait forcément des services qui nécessitent des redémarrages pour certains fichiers et des rechargements pour d'autres).

L'exemple le plus complexe auquel je puisse penser est quelque chose comme Apache. Normalement, vous pouvez simplement lui demander de recharger, mais vous devez parfois demander un redémarrage (si vous ajoutez / supprimez des modules, par exemple).


0

postgres est un bon exemple des grosses différences entre recharger et redémarrer, car ce dernier doit déconnecter tous les clients de la base de données.

lorsque les connexions ne doivent pas être restaurées, vous pouvez commencer par arrêter le service sans "--force" en utilisant pg_ctlcluster .

dans /etc/postgres/{version}/{dbnameBuch/postgresql.conf et à http://www.postgresql.org/docs/manuals/, chaque paramètre a une remarque du type "Ce paramètre ne peut être défini qu'au démarrage du serveur. "

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.