TLC :: Lancer des applications graphiques depuis la ligne de commande
Le shell est un outil réellement puissant mais de temps en temps l'utilisation d'une application graphique peut-être vraiment utile.
Nous pouvons donc depuis notre ligne de commande lancer certains de ces logiciels. Lorsqu'une application est lancée depuis la ligne de commande vous perdez l'usage de celle-ci car l'application lancée utilise la console pour afficher d'éventuel messages et "bloque" l'accès à la console. Les outils développés sous Unix/Linux nous permettent de mettre l'application en arrière-plan et de continuer à utiliser la console. Pour cela, exécutons la commande suivante :
efaistos@kayo:~/ $ inkscape
vous remarquez qu'inkscape s'est lancé mais que vous ne pouvez plus rien taper à l'écran. Pour mettre l'application en arrière plan, il vous suffit de presser les touches Ctrl+z et inkscape sera mis en pause (plus aucune action possible) et vous pourrez réutiliser le prompt. Si vous voulez continuer à exécuter l'application mise en pause, il vous suffit de taper bg (background ou arrière plan pour les non-anglophones) :
efaistos@kayo:~/ $ inkscape ^Z zsh: suspended inkscape efaistos@kayo:~/ $ bg [1] + continued inkscape
Si vous préférez qu'elle utilise à nouveau la console, il vous suffit d'utiliser fg (foreground ou premier plan).
efaistos@kayo:~/ $ fg [1] + running inkscape
Nous avons tout de même un petit soucis. Si vous fermez le terminal, l'applicatin graphique, inkscape dans notre cas, va également se terminer car le processus de celle-ci est un processus enfant du terminal lancé. Donc si celui-ci est tué, tous les processus fils le sont également.
Pour éviter cela, voici comment lancer une application qui ne dépend pas du processus parent :
efaistos@kayo:~/ $ inkscape & disown
Le & lance l'application en arrière plan et disown crée un processus indépendant du shell courant.
Une autre facon de faire la même chose est d'utiliser la commande nohup :
efaistos@kayo:~/ $ nohup inkscape &
Cette deuxième solution a l'avantage de rediriger l'affichage du démarrage de l'application dans un fichier nohup.out dans votre répertoire personnel. Ceci peut-être utile pour débugger une application qui plante par exemple.
Simple, non ? :)
Plus simple en zsh
En zsh, on peut écrire:
inkscape &|Merci pour l'astuce ...
... je connaissais pas du tout cela ;)
Wow
Très intéressant, je connaissais nohup mais pas disown ni le coup du Ctrl+Z.
merci !
De rien ...
Content que tu aies apprécié l'article ;)