Pourquoi les processus d'arrière-plan Unix meurent-ils parfois lorsque je quitte mon shell?

Je voulais savoir pourquoi je vois un comportement différent dans le processus d'arrière-plan dans le shell Bash

Cas 1: Connecté à un serveur Unix à l'aide de Mastic(SSH)

  • Par défaut, il utilise le shell csh
  • J'ai changé pour shell bash
  • tapé sommeil 2000 &
  • appuyez sur entrée

Il m'a donné le numéro de job. Maintenant j'ai tué ma session en cliquant sur le x dans la fenêtre de putty
Maintenant, ouvrez une autre session et a essayé de rechercher le processus..le processus de mort.

Cas 2:Cas 1: Connecté à un serveur Unix à l'aide de Mastic(SSH)
Par défaut, il utilise le shell csh

  • J'ai changé pour shell bash
  • vi mysleep.sh
  • sommeil 2000 & Sauvé mysleep.sh
  • ./mysleep.sh

Diff est ici..au lieu de l'exécution de la commande de mise en veille directement, je suis le stockage de la commande de mise en veille dans un fichier et exécuter le fichier.

Maintenant j'ai tué ma session en cliquant sur le x dans la fenêtre de putty
Maintenant, ouvrez une autre session et a essayé de rechercher le processus..le processus est toujours là

Pas sûr de savoir pourquoi cela se passe. J'ai pensé que j'ai besoin de faire désavouer en bash pour lancer le processus, même après la déconnexion.

Une diff je vois dans le parent de l'id de processus..Dans le second cas..le parent id de processus pour le sommeil 2000 devient 1. Ressemble dès que le processus de mysleep.sh décédé le noyau affecté le processus parent à 1.

source d'informationauteur