GNU/Linux >> Linux Esercitazione >  >> Linux

Come avviare i programmi Linux GUI dalla riga di comando, ma separati dalla riga di comando?

Aggiungi & alla riga di comando:

emacs &

Questo metterà emacs in secondo piano e ti consentirà di continuare a usare il tuo terminale.

Nota che questo lascerà comunque emacs come sottoprocesso del tuo terminale, e quando esci dal terminale uscirà anche da emacs. Per evitarlo, digita:

(emacs &)

Le parentesi dicono al terminale di staccare il processo emacs dal terminale.

Tuttavia, i messaggi stdout e stderr del programma verranno visualizzati sul terminale. Per evitare ciò, usa:

(emacs &> /dev/null &)

Usa nohup .Così:nohup amarok &

Spero che questo aiuti.


Ho pubblicato una risposta a un thread precedente di argomento simile con risposte da varie fonti. Di seguito è riportata una copia della risposta adattata per questo thread.

I seguenti lavori:

$ (gui_app &> /dev/null &)

Questa è la risposta di Nathan Fellman più il reindirizzamento.

"&> /dev/null" reindirizza sia stdout che stderr al dispositivo nullo. L'ultima e commerciale fa eseguire il processo in background. Le parentesi attorno al comando faranno sì che la tua "gui_app" venga eseguita in una subshell.

In questo modo si scollegherà il processo "gui_app" dalla console da cui si esegue questo comando. Quindi, anche se chiudi la finestra in cui è in esecuzione l'emulatore di terminale principale, "gui_app" non si chiuderà. L'ho eseguito, quindi ho esaminato l'albero dei processi con il comando "pstree" e ho scoperto che un'applicazione avviata in questo modo diventerà un processo figlio di "init".

Ad esempio,

$ gui_app &> /dev/null &

eseguirà l'applicazione in background, ma diventerà un processo figlio del processo della console e terminerà alla chiusura del terminale. (Sebbene l'uscita dal terminale tramite bash usando il comando exit o Ctrl-D consentirà a bash di ripulire consegnando il processo in background a init.)

"nohup" funziona come suggerito da NawaMan, ma per impostazione predefinita reindirizza l'output e l'errore a un file. Come ha risposto JeffG, il comando "rinnega" (se disponibile nella shell) può scollegare il processo dal terminale dopo aver avviato un processo in background:

$ gui_app &
$ disown

(A proposito, tutto questo si applica a bash. Sono sicuro che altre shell hanno altri metodi/sintassi per farlo.)

Qualche riferimento:Processi di disconoscimento (UNIX Power Tools)

Se si tratta di una semplice chiamata a un'applicazione GUI, senza opzioni complicate e simili, sembra che anche l'utilizzo di un launcher come "gmrun" o dmenu (avviso:audio ad alto volume) sia una buona opzione. Associalo a una combinazione di tasti. Non uso ancora un launcher ma ho provato quei due.

NOTA:CarlF nei commenti dell'altro thread segnala che le app GUI avviate tramite il metodo "gui_app &" non si chiudono quando esce dal terminale principale. Penso che stessimo chiudendo il terminal in modi diversi. Stavo chiudendo la finestra in cui era in esecuzione l'emulatore di terminale. Penso che potrebbe essere uscito dall'emulatore di terminale tramite la shell (comando di uscita o Ctrl-D). L'ho provato e ho visto che l'uscita da bash non interrompe la GUI avviata come processo in background del terminale come dice CarlF. Sembra che bash consegni i processi in background a init quando gli viene data la possibilità di ripulire. In effetti, questo deve essere il meccanismo con cui il processo in background avviato in una subshell viene passato a init.


Linux
  1. Come installare il software dalla riga di comando di Linux

  2. Linux:come avviare una partizione di Windows dalla riga di comando di Grub?

  3. Boot Stuck:come avviare Gui dalla riga di comando?

  4. Come eseguire TeX dall'interfaccia della riga di comando in Linux

  5. come generare un indirizzo MAC casuale dalla riga di comando di Linux

Come riavviare o riavviare il server Linux dalla riga di comando

Come cercare file dal Terminale su Linux

Come cercare file dalla riga di comando di Linux

Rimuovi directory in Linux - Come eliminare una cartella dalla riga di comando

Come gestire i file dal terminale Linux

Come aprire un URL nel browser Web dal terminale Linux