web-dev-qa-db-fra.com

Je ne peux pas utiliser le terminal lorsque la commande gedit est en cours d'exécution

J'ai récemment installé 12.04.
Lorsque j'essaie d'éditer un fichier avec gedit, je ne peux pas utiliser le terminal avant de fermer le fichier d'édition ou d'ouvrir un nouveau terminal. Mais je pense que je n’ai pas eu ce problème avec 11.04, mais je ne suis pas sûr.
Y a-t-il un moyen d'éviter cela et d'utiliser le même terminal lors de l'édition de fichiers.

43
Hossein Hosseinvand

Réponse courte

Dans le terminal qui ne répond pas:

  1. Frappé Ctrl+Z.
  2. Tapez bget entrez.
  3. Tapez disownet entrez.

Longue réponse

Dans le terminal qui ne répond pas, appuyez sur Ctrl+Z, cela "mettra en pause" le processus (ou "job") et vous renverra le contrôle de la console. Cependant, vous remarquerez que geditne répond plus et vous ne pouvez pas l'utiliser.

Extra: si vous le souhaitez, vous pouvez exécuter la commande jobsname__, vous remarquerez qu'elle lira Stopped pour la commande geditname__, c'est pourquoi vous ne pouvez pas utiliser il.

Pour que le travail soit exécuté avec succès en arrière-plan (c'est-à-dire pour rendre geditresponsive à nouveau), exécutez la commande bg(signifiant arrière-plan). Vous pourrez maintenant utiliser geditet en même temps disposer de l'invite.

Extra: maintenant, si vous exécutez jobsname__, vous remarquerez qu'il va lire Running.

Vous pouvez surmonter tout cela dès le début. Lorsque vous lancez gedità partir du terminal, ajoutez un & à la fin de la commande, de sorte que quelque chose ressemble à ceci gedit /path/to/file &. Ceci lancera gediten arrière-plan depuis le début (vous devrez peut-être appuyer sur Enter plusieurs fois pour récupérer le contrôle de la console).

Extra: si vous suiviez ces notes supplémentaires, vous auriez peut-être remarqué que la deuxième fois que vous exécutiez jobsname__, vous avez pu constater que bash a ajouté un & à la fin de la commande geditname__.

Une fois que vous vous serez habitué à ce système, vous remarquerez peut-être que si vous fermez le terminal, gedit se terminera également, sans même un dialogue de confirmation. Pour éviter cela, exécutez disownname__, qui détachera le processus gedit du terminal, en le supprimant de la liste renvoyée par jobsname__.

79
Alaa Ali

Il suffit de taper:

gedit <filename-to-edit> &

Ceci vous renverra immédiatement l'invite de commande.

43
david6

Vous pouvez utiliser Nohup pour empêcher la connexion de l'interface graphique à un terminal:

Nohup mupdf some.pdf &

Cela vous permettra de fermer le terminal à partir duquel vous lancez, sans que le programme ne soit fermé.

Vous remarquerez également que la commande Nohup créera un fichier avec les noms stdout et stderr de la commande que vous exécutez. Si vous souhaitez empêcher cela, ajoutez &>/dev/null avant le &.

Nohup mupdf some.pdf &>/dev/null &
25
Braiam

Vous pouvez également utiliser la commande disown. Cela est particulièrement utile lorsque vous avez déjà démarré le processus que vous ne souhaitez plus connecter au terminal.

La procédure de base, si je me souviens bien, ressemble à ceci:

$ > firefox      #Oops
Ctrl + z         #Suspend the process
$ > bg           #Push the process to the background
$ > disown       #Detach most recent process started or stopped
$ > exit         #Terminal gone!

Notez que disown est bash spécifique.

Cet article explique assez bien les deux méthodes.

page de manuel pour disown

19
jmathew

De man gedit:

-b, --background
         Run gedit in the background.

Donc, si vous exécutez gedit avec l'option -b, le logiciel démarrera en arrière-plan:

gedit -b [FILE-NAME]

De plus, vous pouvez ensuite créer un alias pour gedit -b (voir ici comment créer un alias permanent):

alias gedit='gedit -b'

À partir de maintenant, vous pourrez utiliser gedit [FILE-NAME] comme d'habitude et le tout démarrera en arrière-plan.

13
Radu Rădeanu

Il suffit de taper:

gedit FILENAME & disown

La fin d'une commande avec & dans bash exécute cette commande en arrière-plan. Cependant, ce processus est toujours attaché au terminal.

Sans disown, si vous fermez le terminal, gedit se fermera sans même vous demander de sauvegarder un fichier modifié. disown détache le processus d'arrière-plan du terminal actuel. Ainsi, si vous fermez le terminal, gedit continuera à fonctionner normalement. Il s'avère que j'avais tort, ce n'est pas le cas pour bash, mais c'est le cas pour zsh. Vous devez toujours exécuter detach après avoir ctrl-z et bg, cependant, même en bash.

Vous pouvez en savoir plus sur les méta-caractères jobs, disown et & intégrés dans la page de manuel pour la commande bash Manpage icon , en particulier la section intitulée "Contrôle du travail".

10
Flimm

C'est probablement parce que vous avez ouvert gedit via un terminal. Lorsque vous faites cela, vous voyez la sortie de ligne de commande qui est normalement masquée si elle est démarrée via l'interface graphique. La meilleure façon de résoudre ce problème consiste à ouvrir une nouvelle fenêtre de terminal. L'autre sera disponible après la fermeture de gedit. Vous pouvez également utiliser le commutateur suggéré par l'utilisateur ci-dessus.

0
user175759