web-dev-qa-db-fra.com

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

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 qu'une fois que j'ai édité postgresql.conf et pg_hba.conf pour permettre les connexions distantes, je devrais 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.

71
nxzr

Ce que vous avez dit est correct, reload indique 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, alors je ne le sais pas.

40
jman6495
  • redémarrage = stop + start
  • recharger = continuer à fonctionner + relire les fichiers de configuration.
61
Abdennour TOUMI

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’est-à-dire que le rechargement entraîne moins ou pas de temps d’immobilisation).

La Debian Policy Manual spécifie que chaque script /etc/init.d/ devrait prendre en charge une action force-reload, ce qui signifie reload si le service le prend en charge et restart si le service ne prend pas en charge le rechargement.

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

8
Marius Gedminas

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 signal systemctl reload [someservice], 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 créez systemctl restart [someservice], il dira à systemctl de dire au service de s’arrêter, de détruire le contexte systemd actuel, d’en créer un nouveau et de réexécuter 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 dans quelque chose s'il vous plaît faites le moi savoir.

4
Gaston Sanchez

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}/{nombase} /postgresql.conf et sur http://www.postgresql.org/docs/manuals / chaque paramètre comporte une remarque du type "Ce paramètre ne peut être défini qu'au démarrage du serveur."

0
maletin

actuellement, si un service a besoin d’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
One Zero