Comment puis-je exécuter une commande depuis le terminal sans la bloquer?


45

J'exécute beaucoup de programmes dans Ubuntu à partir du terminal, mais j'aimerais pouvoir continuer à utiliser le terminal après l'ouverture d'un programme. Comment puis-je mettre les programmes en arrière-plan afin de ne pas ouvrir une autre fenêtre?

Réponses:


60

Il existe différentes manières d'exécuter un programme de terminal et de continuer à utiliser le terminal:

  • Vous pouvez ouvrir un autre onglet de terminal (clic droit, puis sélectionnez "Ouvrir un nouvel onglet").
  • Vous pouvez ajouter &à la commande que vous exécutez. Sachez que vous ne verrez pas de texte sortir sur le terminal, tel que des messages d'erreur.
  • Vous pouvez taper Ctrl- Zpuis exécuter bg. Cela a le même effet que de courircommand &
  • Vous pouvez exécuter nohup command &, puis appuyez sur Entrée. (Merci à ccpizza , voir les commentaires ci-dessous.)

Cependant, appuyer sur Alt- F2puis exécuter votre commande à partir de l'interface graphique est généralement considéré comme la meilleure pratique - il n'y a pas de terminal du tout!

Notez que lorsque vous utilisez &(non nohup), la fermeture du terminal mettra toujours fin à l'application, sauf si vous l'exécutez disownpar la suite .

EDIT: Il semble que l’utilisation nohuplaisse parfois de petites excréments dans votre dossier personnel. Ce qui aurait normalement été connecté au terminal est apparemment sauvegardé dans un fichier dans ~ /.

~~

Un moyen simple d’exécuter un programme en arrière-plan consiste program-name & disownà vous faire basculer vers un terminal qui peut être fermé sans tuer le processus.


4
Pour éviter de tuer le processus enfant après la fermeture du terminal, vous pouvez démarrer votre application en tant que nohup firefox&.
— ccpizza

Cool! Je ne le savais pas (mais après expérimentation, le terminal est toujours "bloqué")!
— WindowsEscapist

il n'est pas "bloqué", il semble seulement "bloqué", si vous tapez entrée une fois, vous obtiendrez une invite.
— ccpizza

Ah, je n'avais pas remarqué ça avant.
— WindowsEscapist

program-name & disownest une bonne solution
— Docteur Henry

8

Vous pouvez exécuter la commande avec a & after.

Par exemple:

Thunderbird &

Voir ici pour plus d'informations.


Cela ne fonctionne que jusqu'à ce que vous
— fermiez

6

Vous pouvez utiliser setsidpour exécuter le programme dans une nouvelle session avec en plus pour &>/dev/nullne recevoir aucun message de journal.

Donc, ce serait comme

setsid program-name &>/dev/null


Cool. Il doit garder le processus en cours lorsque l'utilisateur se déconnecte et que la session en cours est fermée.
— Mikhail Moskalev

1

À l’aide de la screencommande, vous pouvez ouvrir plusieurs sessions de terminal à l’aide d’une seule fenêtre et appuyer sur

apt-get install screen (On Debian based Systems)

yum install screen (On RedHat based Systems)

screen (démarrer nouvel écran)

[Your command]

Ctrl+A d quitter l'écran ... et ainsi de suite

https://linuxize.com/post/how-to-use-linux-screen/


0

Vous pouvez l'exécuter dans un terminal virtuel comme tmux(ou screenj'ai entendu dire que ce n'est plus maintenu)

# This ataches your terminal to a virtual terminal
tmux
run_your_command
# This detaches your virtual terminal (previous command can be running)
CTRL-b d
run_other_commands # on your terminal
# re-attach the virtual terminal to see the status of run_your_command
tmux a

tmux peut faire beaucoup plus, comme:

  • déplacez votre terminal virtuel vers un autre terminal
  • partager le terminal virtuel dans plusieurs terminaux (les autres utilisateurs peuvent voir ce que vous faites ;-))
  • diviser "l'écran" pour avoir plusieurs terminaux.
  • ...

https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.