Comment puis-je conserver une commande que j'ai lancée à partir du shell en cours d'exécution si je me déconnecte du shell?

12

Quelles méthodes existent pour conserver une commande lancée à partir du shell lors de son exécution après la déconnexion du shell?

NDA
la source

Réponses:

11
  • Pour mettre l'application en arrière-plan, utilisez &:

    command &
    
  • Si vous souhaitez fermer le terminal, et maintenir le fonctionnement de l' application, vous pouvez utiliser plusieurs options: , et .screen Écran d'installationdtach Installer dtachnohup

    nohup command &
    
  • L'écran est utile car vous pouvez redémarrer une session et dtach est aussi amusant.

  • Regardez les liens suivants pour plus d'informations

karthick87
la source
l'ajout d'un &à la fin de la commande ne fonctionne-t-il pas aussi?
theTuxRacer
2
@ Kaustubh-P utilisant & est souvent un bon moyen de fermer les terminaux via la commande 'exit', sans appuyer sur le bouton de fermeture X. & fait exécuter la commande en arrière-plan. Mais si le shell parent se ferme. qui peut toujours forcer les programmes d'arrière-plan à quitter.
karthick87
5

Utilisez la commande nohup comme ceci:

nohup gedit /home/user/file.txt &
Javier Rivera
la source
Comment même supprimer nohup: ignorer l'entrée et rediriger stderr vers stdout
Amruth A
5

Une commande utile (bash?) Est disown. la bonne chose à ce sujet est qu'il fonctionne pour un travail déjà en cours d'exécution (en passant, vous renoncez aux travaux, pas aux processus, vous devez donc faire un ctrl-Z, bgavant d'exécuter le désabonnement sur votre travail. Par exemple, imaginez-vous faire ce qui suit:

local % ssh some.where.com
remote % verylongscript.sh

Maintenant, vous vous rendez compte que vous devez y aller mais vous ne voulez pas que le script soit tué à la sortie, vous

ctrl-Z
remote % bg
remote % disown
remote % exit
local %

Maintenant, remotevotre script est toujours en cours d'exécution.

Yossi Farjoun
la source
1

j'utilise

nohup mycommand &

Par exemple, pour faire apparaître un serveur virtuel VirtualBox, je tape ce qui suit dans un shell distant (que je ferme ensuite):

nohup VBoxHeadless --startvm "myvm" --vrdp=off &
Ivan
la source