77 votes

Comment puis-je exécuter une commande à partir du terminal sans la bloquer ?

Je lance beaucoup de programmes dans Ubuntu depuis le terminal, mais j'aimerais pouvoir continuer à utiliser le terminal une fois qu'un programme est ouvert. Comment puis-je mettre les programmes en arrière-plan pour ne pas avoir à ouvrir une autre fenêtre ?

92voto

WindowsEscapist Points 2166

Il existe différentes façons d'exécuter un programme terminal et de continuer à utiliser le terminal :

  • Vous pouvez ouvrir un autre onglet terminal (cliquez avec le bouton droit, puis sélectionnez "Ouvrir un nouvel onglet").
  • Vous pouvez ajouter & à la commande que vous exécutez. Soyez conscient que vous ne verrez pas de sortie de texte dans le terminal, tels que des messages d'erreur.
  • Vous pouvez taper Ctrl-Z puis exécuter bg. Cela a le même effet que d'exécuter command &
  • Vous pouvez exécuter nohup command & puis appuyer sur entrée. (Merci à ccpizza, voir les commentaires ci-dessous.)

Cependant, appuyer sur Alt-F2 puis 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 !

Remarquez que lors de l'utilisation de & (pas de nohup), fermer le terminal mettra quand même fin à l'application à moins que vous n'exécutiez disown par la suite.

ÉDITION : Il semble que l'utilisation de nohup laissera parfois de petits résidus dans votre dossier personnel. Ce qui aurait normalement été enregistré dans le terminal est apparemment sauvegardé dans un fichier dans ~/.

~~

Une façon simple d'exécuter un programme en arrière-plan est nom-du-programme & disown, ce qui vous permettra de fermer un terminal sans tuer le processus.

5 votes

Pour éviter de tuer le processus enfant après la fermeture du terminal, vous pouvez démarrer votre application comme nohup firefox& .

0 votes

Cool! Je ne savais pas ça (mais en faisant des expériences, le terminal reste toujours "bloqué")!

0 votes

Il n'est pas 'bloqué', il semble seulement 'bloqué', si vous tapez sur Entrée une fois, vous obtiendrez une invite.

10voto

tütü Points 301

Vous pouvez utiliser setsid pour exécuter un programme dans une nouvelle session avec en plus &>/dev/null afin de ne pas recevoir de messages de journalisation.

Donc ce serait comme

setsid nom-du-programme &>/dev/null

1 votes

Cool. Il doit continuer à fonctionner lorsque l'utilisateur se déconnecte et que la session actuelle est fermée.

8voto

kavishan Points 11

Vous pouvez exécuter la commande avec un & après.

Par exemple:

thunderbird &

Consultez ici pour plus d'informations.

2 votes

Cela fonctionne seulement jusqu'à ce que vous fermiez la fenêtre du terminal, une fois que vous aurez fermé la fenêtre, le programme se terminera

3voto

Ahmed Ismail Points 131

En utilisant la commande screen, vous pouvez ouvrir plusieurs sessions de terminal en utilisant une seule fenêtre

apt-get install screen (sur les systèmes basés sur Debian)

yum install screen (sur les systèmes basés sur RedHat)

screen (commencer une nouvelle session)

[Votre commande]

Ctrl+A d pour quitter screen ... et ainsi de suite

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

2voto

Vous pouvez l'exécuter dans un terminal virtuel comme tmux (ou screen mais j'ai entendu dire qu'il n'est plus maintenu)

# Ceci attache votre terminal à un terminal virtuel
tmux
run_your_command
# Ceci détache votre terminal virtuel (la commande précédente peut fonctionner)
CTRL-b d
run_other_commands # sur votre terminal
# Réattacher le terminal virtuel pour voir l'état de run_your_command
tmux a

tmux peut faire beaucoup plus, comme :

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

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X