Dis que tu commences le travail comme ça
foo
puis désire que vous vouliez le placer en arrière-plan. Taper Ctrl+ Zpuis bgfait l'affaire mais gèle fooentre Ctrl+ Zet bg. Comment puis-je placer foo en arrière-plan sans le geler au préalable?
Dis que tu commences le travail comme ça
foo
puis désire que vous vouliez le placer en arrière-plan. Taper Ctrl+ Zpuis bgfait l'affaire mais gèle fooentre Ctrl+ Zet bg. Comment puis-je placer foo en arrière-plan sans le geler au préalable?
Réponses:
Fonctionne foodéjà techniquement en arrière-plan. Vous pouvez démarrer une deuxième session de terminal et la première continuera de s'exécuter foopendant que vous effectuez d'autres tâches.
Dans X, cela implique simplement de démarrer une deuxième application de terminal ou d'ouvrir un autre onglet si l'émulateur de terminal de votre choix possède de telles fonctionnalités.
Sur la console, si vous ne l'avez pas prévu, vous devez basculer vers un autre terminal virtuel et vous reconnecter.
Si vous utilisez un terminal multiplexeur comme screenou tmuxvous pouvez démarrer une autre session en son sein. Par exemple, dans l'écran, cela se fait en utilisant Ctrl+ Aimmédiatement suivi de Ctrl+ C. Pour basculer entre eux, utilisez Ca Cn et Ca Cp pour aller et venir entre les sessions terminales.
foo lui-même (en l'absence de vérification spécifique, qui, je suppose, à l'état sauvage est quelque part entre rare et inexistant) ne se soucie pas de savoir s'il s'exécute dans la fenêtre la plus haute ou même s'il y a quelque chose qui affiche sa sortie.
foofonctionne déjà en arrière-plan" ... juste ... Non. Techniquement.
fooalors maintenant que dois-je faire?". Si vous pensez que cette réponse (ou d'autres réponses) n'est pas utile pour répondre à la question, je vous encourage à exercer vos privilèges de vote ainsi qu'à laisser une réponse de votre propre réponse à la question sous ce que vous pensez être l'angle correct, plutôt que argumenter sur l' une des réponses laissées sur la question. Peut-être que vous pensez par exemple que la réponse de l0b0 est meilleure, mais ma réponse offre un moyen de faire au moins à peu près ce que l'OP veut.
L'envoi d'une application du premier plan à l'arrière-plan nécessite la coopération du terminal et du shell. Le terminal ne peut pas le faire seul, car le shell doit définir le groupe de processus de premier plan. Le shell ne peut pas le faire seul, car le terminal doit traiter la pression de touche (le shell n'est pas au premier plan, il ne peut donc pas recevoir de pression de touche).
J'ai une configuration zsh où je peux appuyer sur Ctrl+ Zdeux fois de suite rapidement; la première presse suspend le processus et la deuxième presse le reprend en arrière-plan. Je ne sais pas comment le porter sur bash.
Si vous utilisez un émulateur de terminal qui vous permet d'injecter des touches, vous pouvez injecter ^Zbg^M(en utilisant la ^notation pour les caractères de contrôle). Par exemple, avec un émulateur de terminal X11, exécutez xdotool --window 1234 Ctrl_L+Z b g Returnoù 1234 est l'ID de fenêtre de l'émulateur de terminal. Avec Screen, exécutez screen -S foo -p 12 -X stuff $'\032bg\r'où fooest le nom de la session d'écran et 12l'ID de la fenêtre.
Si votre saisie n'est pas assez rapide pour le cas, exécutez-la à kill -s SIGSTOP 1023 && kill -s SIGCONT 1023partir d'un autre shell, en supposant 1023 comme PID cible.
AVIS DE NON-RESPONSABILITÉ: Comme Ruslan le savait probablement, cette séquence redémarre réellement le travail si rapidement bashqu'il ne le remarque pas.