nohup vs. Screen

39

Auparavant, je nohupdirigeais de gros jobs d'arrière-plan, mais j'ai remarqué que beaucoup de gens l'utilisent screendans ce contexte. Donne-t-il screenun avantage fonctionnel dont je ne suis pas au courant ou s'agit-il simplement d'une question de préférence?

HalosGhost
la source

Réponses:

25

Les deux ont leurs propres avantages et inconvénients:

nohup:

  1. nohup est utile pour exécuter des processus en arrière-plan lorsque ceux-ci ne nécessitent aucune intervention de l'utilisateur, comme un serveur Web ou tout autre processus serveur similaire.
  2. nohup crée un journal dans le répertoire d'exécution du processus. Le nom du fichier journal est nohup.out.
  3. Cela évite que le processus soit tué par suite d'une erreur Ctrl+ Cou d'une combinaison de touches similaire. Juste une sauvegarde.
  4. Il est normalement installé par défaut avec la configuration de base. Pas besoin d'installer séparément comme un écran.
  5. Sa fonctionnalité est très spécifique à l'exécution d'un travail en arrière-plan et au déchargement d'une sortie. Faible mémoire

écran:

  1. Je dois installer séparément. Vous ne pouvez pas aller dans un centre de données ou vous connecter à une boîte et attendre que l'écran soit présent.
  2. Il est bon de gérer plusieurs terminaux sur des sujets distincts et de leur donner des noms.
  3. Son plus de gestionnaire de terminal et pas une commande pour exécuter un processus pour un temps infini comme nohup.
  4. C'est plus approprié si le processus nécessite l'intervention de l'utilisateur. Comme les scripts d'installation, les invites oui / non.
  5. Avec des tonnes de fonctionnalités, vient sa mémoire. Mais d'accord, certaines fonctionnalités sont vraiment géniales.

@rahmu, je ne devinerai jamais pid si je veux le tuer. Assurez-vous avant de tuer quelqu'un / quelque chose;).

La meilleure façon dans les deux cas pour l' écran et nohup est: ps -eaf | grep "nohup" | grep "your proc name/keyword".

Utilisez l'écran et vérifiez ce qui fonctionne dessus.

Pour conclure, ce sont deux choses différentes faites avec des ordres du jour différents, donc la comparaison est difficile.

mrtipale
la source
20

l'écran a une tonne de fonctionnalités. Il ne s'agit pas simplement de "démoniser" un processus, il s'agit plutôt d'un gestionnaire de fenêtres pour les terminaux.

Il peut être utilisé si le processus nécessite une entrée à un moment donné, vous pouvez vérifier la sortie du processus, vous reconnecter à son terminal, ...

Donc non, ce n'est pas juste une question de préférence, ils ne sont pas du tout la même chose.

Tapis
la source
4
Vous pouvez également vérifier la sortie nohup [...] > fileName.log 2>&1. De plus, cela signifie que la sortie n'est pas perdue.
Sardathrion - Réintégrer Monica
1
J'aime cette description d'écran: "un gestionnaire de fenêtres pour terminaux"!
rickumali
7

screen te laisse:

  1. Revenez à l'écran actuel, envoyez des signaux, voyez à quelle vitesse ça va, voyez s'il y a des messages d'erreur, etc.
  2. nommer les processus avec un titre significatif. si vous voulez tuer un processus, vous n'avez pas à deviner son identifiant de processus.
avi
la source
-2
  1. la progression du processus peut également être vérifiée par le nohupdébogage des champs de la base de données.
  2. ps ax | grep nohup vous montrera l'identifiant du processus et vous pourrez le tuer.
  3. nohupest plus rapide. La raison en est simple: cela dépend de la connexion Internet entre votre PC et le serveur. Chaque fois qu'Internet ralentit, le processus se ralentit également.
Nikolay
la source
2
Je ne comprends pas le point 3. Pouvez-vous élaborer?
Mattdm
1
le point 2 est incorrect.
jeudi
N ° 2 montrera que le processus ne tue que s'il n'y a qu'un seul processus nohup en cours d'exécution. Sinon, il va montrer plusieurs. Dans les deux cas, le point 2 n'est pas tout à fait incorrect.
Anil_M