Rechazar automáticamente la aplicación cuando la ejecuta desde una terminal.

Rechazar automáticamente la aplicación cuando la ejecuta desde una terminal.

¿Cómo se rechaza automáticamente una aplicación después de haberla iniciado desde una terminal?

Por ejemplo: si inicia una terminal y la ejecuta, firefoxla aplicación se iniciará, pero cuando cierre la terminal, Firefox también se cerrará. Para evitar cerrar involuntariamente aplicaciones que se han iniciado desde una terminal, primero se pueden poner en segundo plano con el ampersant: firefox &lo que también restaura la capacidad de usar el indicador de esa terminal. A continuación, puedes desautorizar la aplicación desde ese mismo terminal usando el ID de proceso (PID) de la aplicación, mira este ejemplo a continuación:

$ firefox & 
$ ps | grep firefox
14917 pts/6    00:00:00 firefox
$ disown 14917

La aplicación ahora se ejecuta independientemente del terminal que esté utilizando y cerrar el terminal ya no finalizará la aplicación.

Pero, ¿cómo puedes hacer esto automáticamente cada vez que inicias una aplicación?

Respuesta1

La forma más sencilla es ejecutar:

daemon firefox

para que puedas seguir usando/cerrando el propio terminal

Respuesta2

EDITAR: unmejor respuestafue proporcionado por IV.

Para hacer esto automáticamente, puedes usar un alias de bash. Si agrega las siguientes líneas a su archivo .bash_aliases en su directorio de inicio, puede iniciar cualquier aplicación my_applicationdesde la terminal mientras la coloca automáticamente en segundo plano y posteriormente la rechaza desde esa terminal, usando el comando s my_application:

# start programs from shell but immediately disown them
startAndDisown() {
    $1 & disown $! 
}
alias s=startAndDisown

Tenga en cuenta que $!devuelve automáticamente el PID del último trabajo asíncrono.

Respuesta3

firefox & disown $!no funciona para mí, pero una solución similar que funciona para mí esfirefox&;disown

Otra solución que no implica disownes utilizar GNU Screen. Conservará su sesión de terminal incluso si cierra la ventana de terminal. Sin embargo, su practicidad está limitada por cómo usas tu terminal. Si sólo usas una ventana de terminal a la vez, esta es una gran solución. Si utilizas más terminales, menos. Instale la pantalla usando su administrador de paquetes favorito, luego cada vez que abra un tipo de terminal screen -r(o screensi no se está ejecutando ninguna sesión de pantalla). Entonces no tendrás que preocuparte por cerrar tu terminal. Esta es una solución muy específica, pero podría ser adecuada para usted.

información relacionada