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

40

J'ai récemment installé la version 12.04.
Lorsque j'essaie de modifier un fichier avec gedit , je ne peux pas utiliser le terminal tant que je ne ferme pas le fichier de modification ou que je ne dois pas 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.
Est-il possible d'éviter cela et d'utiliser le même terminal lors de la modification de fichiers?

    
posée user175023 14.07.2013 - 09:14
la source

7 réponses

77

Réponse courte

Dans le terminal qui ne répond pas:

  1. Appuyez sur Ctrl + Z .
  2. Tapez bg et entrez.
  3. Tapez disown et entrez.

Réponse longue

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

Extra: if you want to, you can execute the command jobs, you'll notice that it'll read Stopped for the gedit command, that's why you can't use it.

Pour que le travail s'exécute correctement en arrière-plan (c'est-à-dire pour rendre gedit réactif à nouveau), exécutez la commande bg (ce qui signifie arrière-plan). Vous pourrez maintenant utiliser gedit tout en ayant l’invite pour vous-même.

Extra: now, if you execute jobs, you'll notice that it'll read 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, ce qui donne un résultat similaire à celui-ci gedit /path/to/file & . Cela lancera gedit en arrière-plan depuis le début (vous devrez peut-être appuyer sur Entrée plusieurs fois pour récupérer le contrôle de la console).

Extra: if you were following these extra notes, you might have noticed that the second time you did jobs, you could see that bash added a & to the end of the gedit command.

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 disown , qui détachera le processus gedit du terminal, en le supprimant de la liste renvoyée par jobs .

    
réponse donnée Alaa Ali 14.07.2013 - 09:38
la source
41

Tapez simplement:

gedit <filename-to-edit> &

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

    
réponse donnée david6 14.07.2013 - 11:48
la source
25

Vous pouvez utiliser le 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 le programme sans fermer le programme.

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

nohup mupdf some.pdf &>/dev/null &
    
réponse donnée Braiam 12.08.2013 - 01:21
la source
19

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 désavent est bash spécifique.

Ce billet de blog explique très bien les deux méthodes.

Page de manuel relative à désavouer

    
réponse donnée jmathew 12.08.2013 - 05:25
la source
11

De man gedit :

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

Ainsi, si vous exécutez gedit avec l'option -b , elle 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'

A partir de maintenant, vous pouvez utiliser gedit [FILE-NAME] normalement et le contenu démarrera en arrière-plan.

    
réponse donnée Radu Rădeanu 15.07.2013 - 14:02
la source
10

Tapez simplement:

gedit FILENAME & disown

La fin d'une commande avec & dans bash exécute cette commande en arrière-plan. Toutefois, ce processus est toujours associé 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, de sorte que 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 cas pour zsh. Vous devez toujours exécuter detach après avoir exécuté ctrl - z et bg , même en bash.

Vous pouvez en savoir plus sur les éléments intégrés jobs , disown et le & metacharacter dans la page de manuel. pour la commande bash ,enparticulierlasectionintitulée"Contrôle du travail".

    
réponse donnée Flimm 16.07.2013 - 23:42
la source
0

Ceci est probablement dû au fait 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 solution 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.

    
réponse donnée user175759 16.07.2013 - 21:12
la source

Lire d'autres questions sur les étiquettes