89 votes

Quelle est la différence entre "service restart" et "service reload" ?

J'essaie de comprendre la différence entre service restart [someservice] y service reload [someservice] . Je comprends que restart redémarre le service alors que reload recharge la configuration. Mais je ne comprends pas assez bien les implications pratiques de tout cela pour déterminer laquelle je dois 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 y pg_hba.conf pour autoriser les connexions à distance, je devrais lancer :

sudo service postgresql restart

Cependant, si je devais deviner lequel utiliser sur la base de la description ci-dessus, je choisirais reload .

Au cas où cela aurait de l'importance, je suis sous Ubuntu 11.10, mais j'espère une explication aussi générale que possible.

77voto

Budda Points 5575
  • redémarrer \= stop + start
  • recharger \= rester en fonctionnement + relire les fichiers de configuration.

49voto

jman6495 Points 506

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 peut y avoir certains services qui "ne suivent pas la règle" ou qui ne rechargent pas les fichiers de configuration. Pour cette raison, il est probablement plus sûr d'utiliser la méthode restart . Personnellement, je n'utilise pas postgresql donc je ne sais pas.

10voto

Michiel de Mare Points 15888

Tous les services ne prennent pas en charge reload . Pour ceux qui le font, c'est généralement préférable au redémarrage (c'est-à-dire que le rechargement entraîne moins ou pas de temps d'arrêt).

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

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

5voto

Gaston Sanchez Points 151

Pour se développer réponse avec mon expérience avec systemd.

Dans systemd, chaque fois qu'un processus est lancé, il est exécuté dans le contexte de systemd, l'exemple le plus clair de ceci est avec les variables d'environnement définies dans son fichier d'unité.

Ainsi, lorsque vous envoyez un systemctl reload [someservice] il envoie un signal au service pour qu'il se recharge en douceur si cela est possible. Dans le cas contraire, le processus ignorera simplement le signal. Ceci est cependant configurable.

Qu'est-ce que j'entends par "gracieusement" ? pour démarrer de nouveaux travailleurs avec la nouvelle configuration ou le nouveau code et arrêter les anciens travailleurs lorsqu'ils ont fini de répondre aux demandes actuelles, le cas échéant.

Et si vous faites 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 relancer le service. Ceci est utile par exemple pour recharger les variables d'environnement dans un contexte systemd ou si un rechargement n'est pas supporté.

J'espère que cela vous éclaire un peu et si je me trompe sur quelque chose, n'hésitez pas à me le faire savoir.

1voto

stratovarius Points 111

Signal Le détail peut être important pour le rechargement.
La plupart du temps, il s'agit d'envoyer un signal approprié (SIGHUP) au processus de service. Si l'application sous-jacente a une sorte de stratégie de "réapplication de la configuration en temps réel", alors il y a très probablement une ligne commençant par "ExecReload=" dans le fichier de l'unité de service. Ce qui signifie que le rechargement est optionnel et que vous devez vérifier si l'application implémente le rechargement : (docker i.e.)

cat $(echo $(systemctl show -p FragmentPath docker) | cut -d "=" -f 2)

Le redémarrage est juste un arrêt-démarrage. Systemd a seulement besoin de connaître la commande "ExecStart" pour démarrer.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X