GNU/Linux >> Tutoriels Linux >  >> Linux

Comment démarrer des programmes Linux GUI à partir de la ligne de commande, mais séparément de la ligne de commande ?

Ajouter & à la ligne de commande :

emacs &

Cela mettra emacs en arrière-plan et vous permettra de continuer à utiliser votre terminal.

Notez que cela laissera toujours emacs en tant que sous-processus de votre terminal, et lorsque vous quitterez le terminal, il quittera également emacs. Pour éviter cela, tapez :

(emacs &)

Les parenthèses indiquent au terminal de détacher le processus emacs du terminal.

Pourtant, les messages stdout et stderr du programme apparaîtront sur le terminal. Pour éviter cela, utilisez :

(emacs &> /dev/null &)

Utilisez nohup .Comme ceci :nohup amarok &

J'espère que cela vous aidera.


J'ai posté une réponse à un sujet plus ancien sur un sujet similaire avec des réponses provenant de diverses sources. Voici une copie de cette réponse adaptée pour ce fil.

Travaux suivants :

$ (gui_app &> /dev/null &)

Ceci est la réponse de Nathan Fellman plus la redirection.

"&> /dev/null" redirige à la fois stdout et stderr vers le périphérique nul. La dernière esperluette exécute le processus en arrière-plan. Les parenthèses autour de la commande entraîneront l'exécution de votre "gui_app" dans un sous-shell.

Cela détachera le processus "gui_app" de la console à partir de laquelle vous exécutez cette commande. Ainsi, même si vous fermez la fenêtre dans laquelle l'émulateur de terminal parent est en cours d'exécution, "gui_app" ne se fermera pas. J'ai exécuté ceci puis j'ai regardé l'arborescence des processus avec la commande "pstree" et j'ai trouvé qu'une application démarrée de cette façon deviendrait un processus enfant pour "init".

Par exemple,

$ gui_app &> /dev/null &

exécutera l'application en arrière-plan, mais il deviendra un processus enfant du processus de la console et se terminera lorsque vous fermerez le terminal. (Bien que quitter le terminal via bash en utilisant la commande exit ou Ctrl-D laissera bash nettoyer en transférant le processus d'arrière-plan à init.)

"nohup" fonctionne comme NawaMan l'a suggéré, mais cela redirige la sortie et l'erreur vers un fichier par défaut. Comme JeffG a répondu, la commande "disown" (si disponible dans le shell) peut détacher le processus du terminal après avoir démarré un processus en arrière-plan :

$ gui_app &
$ disown

(Au fait, tout cela s'applique à bash. Je suis sûr que d'autres shells ont d'autres méthodes/syntaxes pour le faire.)

Quelques références :Rejeter les processus (outils électriques UNIX)

S'il s'agit d'un simple appel à une application graphique - sans options compliquées et autres - il semble que l'utilisation d'un lanceur comme "gmrun" ou dmenu (avertissement :son fort) soit également une bonne option. Associez-le à une combinaison de touches. Je n'utilise pas encore de lanceur mais j'ai essayé ces deux-là.

REMARQUE :CarlF dans les commentaires de l'autre fil de discussion signale que les applications GUI démarrées via la méthode "gui_app &" ne se ferment pas lorsqu'il quitte le terminal parent. Je pense que nous fermions le terminal de différentes manières. Je fermais la fenêtre dans laquelle l'émulateur de terminal fonctionnait. Je pense qu'il a peut-être quitté l'émulateur de terminal via le shell (commande de sortie ou Ctrl-D). J'ai testé cela et j'ai vu que la sortie via bash n'empêche pas le démarrage de l'interface graphique en tant que processus d'arrière-plan du terminal, comme le dit CarlF. Il semble que bash abandonne les processus d'arrière-plan à l'initialisation lorsqu'il a la possibilité de nettoyer. En fait, ce doit être le mécanisme par lequel le processus d'arrière-plan démarré dans un sous-shell est transféré à init.


Linux
  1. Comment installer un logiciel à partir de la ligne de commande Linux

  2. Linux - Comment démarrer une partition Windows à partir de la ligne de commande Grub ?

  3. Comment invoquer une macro Openoffice à partir de la ligne de commande Linux ?

  4. Comment envoyer un message à mon websocket socket.io à partir de la ligne de commande sous Linux ?

  5. Comment puis-je copier un dossier à partir de la ligne de commande Linux ?

Comment redémarrer ou redémarrer le serveur Linux à partir de la ligne de commande

Comment rechercher des fichiers à partir du terminal sous Linux

Comment rechercher des fichiers à partir de la ligne de commande Linux

Supprimer le répertoire sous Linux - Comment supprimer un dossier de la ligne de commande

Comment gérer les fichiers depuis le terminal Linux

Comment ouvrir une URL dans le navigateur Web à partir du terminal Linux