Déplacer le programme en cours en arrière-plan dans bash

10

Si j'exécute un programme en bash, je peux le suspendre en appuyant sur Ctrl+ Z. Si je veux laisser le programme en cours d'exécution, je peux alors utiliser la bgcommande. Existe-t-il un moyen de mettre directement le programme en arrière-plan, sans avoir à taper bg?

Clarification : je veux mettre le programme en arrière-plan lorsqu'il est déjà en cours d'exécution, sans le suspendre.

Kalle Elmér
la source
2
Ce n'est pas un doublon. Je ne veux pas garder un programme en cours d'exécution lorsque la fenêtre du terminal est fermée et je ne peux pas taper une commande différente. Je veux mettre un processus en arrière-plan lorsqu'il est déjà en cours d'exécution.
Kalle Elmér
1
oui ce n'est pas un doublon, veuillez le rouvrir.
saji89
Merci pour tous ces gars qui ont aidé à rouvrir ça .. @Kalle, La question est maintenant rouverte.
saji89
Merci beaucoup! Quant à trouver réellement une réponse à la question, je suppose que la seule façon est de la suspendre d'abord, puis de la retracer.
Kalle Elmér

Réponses:

4

Je ne pense pas qu'il soit possible de déplacer un programme en cours d'exécution en arrière-plan (alors que le processus est toujours en cours d'exécution).
Cependant, il existe une application appelée GNU-Screen , à l'aide de laquelle vous pouvez exécuter un certain nombre d'applications basées sur la console - des shells de commandes interactives, des applications basées sur des malédictions, des éditeurs de texte, etc. - au sein d'un même terminal.
Voici un joli tutoriel sur GNU-Screen.
Notez qu'il ne fait pas exactement ce que vous avez demandé, mais sert quand même le but.
Exemple:
Voici l'implémentation de ce que vous avez demandé en utilisant GNU-Screen.

  1. Exécuter screen
    Vous obtiendrez des détails sur le logiciel. Appuyez sur Retour.
  2. Maintenant, vous verrez votre terminal normal. Cependant, c'est une fenêtre d'écran. Tapez n'importe quelle commande vlc. Il démarrera le processus dans cette fenêtre.
  3. Maintenant, pour ouvrir une nouvelle fenêtre, tapez Ctrl+ A, puis. CVous pouvez exécuter une nouvelle commande ici. Notez que le processus que vous avez démarré dans la fenêtre 1 est toujours en cours d'exécution.
  4. Pour vous détacher de l'écran, appuyez sur Ctrl+ Apuis sur. DVous revenez maintenant à votre ancien terminal. Cependant, tout processus que vous avez démarré à partir de l'écran est toujours en cours d'exécution.
enflammer
la source
4

À ma connaissance, vous pouvez l'exécuter, puis ajouter un & après comme ceci:myprogram &

Je peux cependant me tromper ici.

[EDIT]: En y regardant de plus près, si vous exécutez ce qui précède, l'application se fermera lorsque vous fermerez le terminal. Si vous souhaitez que l'application s'exécute en arrière-plan, à ma connaissance, l'application doit être écrite de manière à prendre en charge le comportement du démon.

[EDIT 2]: nohup command & semble être plus proche de ce que vous souhaitez réaliser. Nohup permettra à une application de s'exécuter et ignorera son entrée et redirigera sa sortie vers un fichier appelé nohup.outdans le répertoire courant.

NlightNFotis
la source
Je me fiche de savoir s'il est fermé lorsque je ferme la fenêtre du terminal. Tout ce que je recherche, c'est un raccourci clavier en bash qui fonctionne comme Ctrl + Z mais qui maintiendra le processus en arrière-plan, au lieu de le suspendre.
Kalle Elmér
0

Ce n'est peut-être pas une vraie réponse. Je me demande ce que les différents de Bash entre Ubuntu avec MSYS.

J'exécute MSYS et lorsque j'exécute Application/Chrome &, il passe immédiatement en arrière-plan. Je peux utiliser le bash MSYS comme prochaine invite commencer à clignoter.

Et ces questions sont-elles déplacer le programme en cours d'exécution à l'arrière-plan avec des intentions similaires?

Edward Chan JW
la source