2 votes

Différence fonctionnelle entre la commande d'écran et le processus d'arrière-plan

Quelle est la différence fonctionnelle entre ces deux commandes pour exécuter une application/un processus ?

$ screen -d -m -S myapp "/opt/myapp-dir/myapp --some-params"

$ (/opt/myapp-dir/myapp --some-params &)

En supposant que le programme réside dans /opt et lit/écrit de/vers /tmp y /var/myapp-data .

2voto

heemayl Points 85741
  • screen est un émulateur de terminal, qui multiplexe plusieurs terminaux virtuels en un seul. Lorsque vous exécutez le screen votre programme commencera à s'exécuter dans une fenêtre de terminal virtuel de type screen (vous pouvez nommer la fenêtre avec -t option). Vous pouvez maintenant vous détacher du multiplexeur à tout moment (en utilisant l'option C-a C-d (en supposant les liaisons par défaut), et revenez quand vous voulez, et (ré)attachez avec la même screen session en utilisant screen -rD (ou similaire selon le statut de la session), et obtiendra les mêmes contrôles

  • L'arrière-plan à l'intérieur d'un sous-shell sera élagué à SIGHUP comme le parent Shell ne suivra pas le petit-fils, mais vous ne pouvez plus (directement) suivre/contrôler le processus, sans parler de rattacher des capacités qui screen fournit. Bien sûr, vous pouvez vérifier le statut du processus avec PID (en utilisant des outils comme ps / top ou directement l'analyse syntaxique /proc/PID/ ) mais je ne sais pas si cela suffirait dans votre cas. Donc, si vous avez besoin de voir une sortie du processus (en supposant qu'aucune redirection n'est en place) ou si vous voulez vérifier/contrôler le processus, utilisez screen / tmux / byobu ou similaire.

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