2017-02-19 1 views
0

J'ai mis cette question sur stackoverflow, parce que j'ai trouvé beaucoup de questions sur le sujet ici.Pourquoi utiliser nohup lorsque l'application peut être exécutée en tant que service système?

Courte introduction

En termes simples, nohup peut être utilisé pour exécuter des applications en arrière-plan et les maintient en cours d'exécution après que l'utilisateur se déconnecte ou la session de terminal ou ssh est fermé par exemple

Il existe de nombreux exemples de questions ici sur stackoverflow, comme this ou that.

Ma question est simple.

Pourquoi opter pour nohup, quand il y a des options comme upstart, systemd, ... qui gèrent l'application comme service d'une manière beaucoup plus pratique (niveau d'exécution, ...)?

En lisant les nombreuses questions sur des sujets similaires, la seule option semble être nohup. Presque jamais la réponse est quelque chose comme: « ... utiliser un script arriviste, il est donc tout traité pour vous ... »


Je principalement aller avec par exemple upstart, sauf peut-être pour un scénario de test rapide et sale.

Ai-je oublié quelque chose d'important?

+0

Stack Overflow est un site de questions de programmation et de développement. Cette question semble être hors sujet car il ne s'agit pas de programmation ou de développement. Voir [Quels sujets puis-je poser à ce sujet?] (Http://stackoverflow.com/help/on-topic) dans le centre d'aide. Peut-être [Super User] (http://superuser.com/) ou [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) serait un meilleur endroit à demander. Voir aussi [Où puis-je poser des questions sur Dev Ops?] (Http://meta.stackexchange.com/q/134306) – jww

+0

J'ai mentionné mes intentions, mais vous avez raison, bien sûr .. Je vais examiner cela et déplacez-le, si possible. Merci. – rocksteady

Répondre

4

nohup est rapide, facile, ne nécessite pas un accès root et ne fait pas de changements permanents dans le système. C'est pourquoi de nombreuses personnes l'utilisent (ou essaient de l'utiliser) au lieu de configurer les services.

Exécuter des tâches en arrière-plan sans supervision est généralement une mauvaise idée, bien qu'il existe de nombreux cas d'utilisation légitimes qui ne correspondent pas au modèle de service traditionnel. Par exemple:

  1. Le processus d'arrière-plan peut être nécessaire seulement parfois, après certaines actions de l'utilisateur.
  2. Plus d'une instance peut être nécessaire. Par exemple: un par utilisateur ou un par session.
  3. Le processus n'a pas besoin d'être exécuté en permanence. Il quitte juste après avoir fait son travail.

Quelques exemples du monde réel (qui utilisent quelque chose comme nohup et serait difficile à mettre en œuvre des services système):

  1. git va parfois courir git gc l'arrière-plan pour optimiser référentiel sans bloquer le travail de l'utilisateur
  2. adb démarrera son service en arrière-plan et continuera à fonctionner jusqu'à ce que l'utilisateur demande de le terminer
  3. Certains compilateurs ont la possibilité de continuer à fonctionner en arrière-plan pour réduire le démarrage heures d'invocations suivantes