Mettre un processus en arrière-plan sans l'arrêter - (ctrl + z)?

16

Si je démarre un processus en le tapant normalement sur la ligne de commande, comme

wget http://site.com/bigfile.zip

puis décidez que je veux déplacer cela en arrière-plan, je sais que je peux utiliser quelque chose comme ctrl+zet puis bg 1(ou d' jobsabord si nécessaire pour obtenir l'identifiant) pour le mettre en arrière-plan.

Ma question est de savoir s'il existe un moyen de déplacer un travail du premier plan directement vers l'arrière-plan sans l'arrêter - comme un autre raccourci en plus ctrl+zqui ferait cela.

Je me rends également compte que je peux ajouter &à la fin de la commande d'origine pour le démarrer en arrière-plan, mais la question concerne le moment où vous démarrez un processus au premier plan, puis réalisez que vous souhaitez le déplacer en arrière-plan.

cwd
la source

Réponses:

14

Oui, absolument: l' écran (1) est la réponse.

Pour commencer, ajoutez screen -Rà ~ / .bash_profile ou équivalent, déconnectez-vous et reconnectez-vous.

Pour continuer ce qui s'exécute en arrière-plan, appuyez sur Ctrl-A puis sur N. Cela créera un nouvel écran de terminal au premier plan tout en continuant de façon transparente votre processus de course en arrière-plan.

Appuyez sur Ctrl-A puis "pour obtenir une liste interactive des écrans que vous avez ouverts, ou appuyez sur Ctrl-A puis sur un numéro pour passer directement à un écran spécifique.

Votre exigence initiale était de pouvoir déplacer un processus en arrière-plan sans l'arrêter. L'écran a deux avantages supplémentaires, et ceux-ci sont énormes si vous aimez faire plusieurs choses à la fois:

  1. Vous pouvez basculer entre les processus de manière beaucoup plus fluide qu'en utilisant Control-Z, bg, fg, etc.
  2. Si votre session de terminal est déconnectée, vos processus (comme wget http://example.com/bigfile.iso) ne s'arrêteront PAS! Toutes vos sessions shell vous attendront lorsque vous vous reconnecterez.

Pour plus d'informations, lisez la page de manuel screen (1) ou le manuel de l'écran GNU .

Skyhawk
la source
1
Assurez-vous simplement que le screenpaquet est installé en premier :)
George Tasioulis