Añadir &
a la línea de comandos:
emacs &
Esto pondrá emacs en segundo plano y le permitirá continuar usando su terminal.
Tenga en cuenta que esto seguirá dejando emacs como un subproceso de su terminal, y cuando salga de la terminal, también saldrá de emacs. Para evitar esto, escriba:
(emacs &)
Los paréntesis le indican a la terminal que separe el proceso emacs de la terminal.
Aún así, los mensajes stdout y stderr del programa aparecerán en la terminal. Para evitar esto, use:
(emacs &> /dev/null &)
Usa nohup
.Así:nohup amarok &
Espero que esto ayude.
Publiqué una respuesta a un hilo anterior de un tema similar con respuestas de varias fuentes. A continuación se muestra una copia de esa respuesta adaptada para este hilo.
Siguientes obras:
$ (gui_app &> /dev/null &)
Esta es la respuesta de Nathan Fellman más la redirección.
"&> /dev/null" redirige tanto stdout como stderr al dispositivo nulo. El último ampersand hace que el proceso se ejecute en segundo plano. Los paréntesis alrededor del comando harán que su "gui_app" se ejecute en una subcapa.
Hacer esto separará el proceso "gui_app" de la consola desde la que ejecuta este comando. Entonces, incluso si cierra la ventana en la que se está ejecutando el emulador de terminal principal, "gui_app" no se cerrará. Ejecuté esto, luego miré el árbol de procesos con el comando "pstree" y encontré que una aplicación iniciada de esta manera se convertirá en un proceso secundario para "init".
Por ejemplo,
$ gui_app &> /dev/null &
ejecutará la aplicación en segundo plano, pero se convertirá en un proceso secundario del proceso de la consola y finalizará cuando cierre la terminal. (Aunque salir de la terminal a través de bash usando el comando exit o Ctrl-D permitirá que bash se limpie entregando el proceso en segundo plano a init).
"nohup" funciona como ha sugerido NawaMan, pero eso redirige la salida y el error a un archivo de forma predeterminada. Como respondió JeffG, el comando "disown" (si está disponible en Shell) puede desconectar el proceso de la terminal después de haber iniciado un proceso en segundo plano:
$ gui_app &
$ disown
(Por cierto, todo esto se aplica a bash. Estoy seguro de que otros shells tienen otros métodos/sintaxis para hacer esto).
Alguna referencia:Procesos de desautorización (UNIX Power Tools)
Si se trata de una simple llamada a una aplicación GUI, sin opciones complicadas y demás, parece que usar un iniciador como "gmrun" o dmenu (advertencia:audio fuerte) también es una buena opción. Vincularlo a una combinación de teclas. Todavía no uso un lanzador, pero he probado esos dos.
NOTA:CarlF en los comentarios del otro hilo informa que las aplicaciones GUI iniciadas a través del método "gui_app &" no se cierran cuando sale de la terminal principal. Creo que estábamos cerrando la terminal de diferentes maneras. Estaba cerrando la ventana en la que se estaba ejecutando el emulador de terminal. Creo que pudo haber estado saliendo del emulador de terminal a través del shell (comando de salida o Ctrl-D). Probé esto y vi que salir a través de bash no detiene el inicio de la GUI como proceso en segundo plano de la terminal como dice CarlF. Parece que bash elimina los procesos en segundo plano para iniciarlos cuando se le da la oportunidad de limpiar. De hecho, este debe ser el mecanismo por el cual el proceso en segundo plano iniciado en una subcapa se transfiere a init.