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.
Dans le terminal qui ne répond pas:
bg
et entrez.disown
et entrez.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 gedit
ne répond plus et vous ne pouvez pas l'utiliser.
Extra: si vous le souhaitez, vous pouvez exécuter la commande
jobs
name__, vous remarquerez qu'elle lira Stopped pour la commandegedit
name__, 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 gedit
responsive à nouveau), exécutez la commande bg
(signifiant arrière-plan). Vous pourrez maintenant utiliser gedit
et en même temps disposer de l'invite.
Extra: maintenant, si vous exécutez
jobs
name__, 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 gedit
en 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
jobs
name__, vous avez pu constater que bash a ajouté un&
à la fin de la commandegedit
name__.
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
name__, qui détachera le processus gedit du terminal, en le supprimant de la liste renvoyée par jobs
name__.
Il suffit de taper:
gedit <filename-to-edit> &
Ceci vous renverra immédiatement l'invite de commande.
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 &
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.
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.
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 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 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.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
, en particulier la section intitulée "Contrôle du travail".
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.