Como você rejeita automaticamente um aplicativo depois de iniciá-lo em um terminal?
Por exemplo: se você iniciar um terminal e executar firefox
o aplicativo será iniciado, mas quando você fechar o terminal, o Firefox também fechará. Para evitar o fechamento acidental de aplicativos que foram iniciados a partir de um terminal, pode-se primeiro colocá-los em segundo plano com o e comercial: firefox &
o que também restaura a capacidade de usar o prompt desse terminal. A seguir, você pode negar a aplicação desse mesmo terminal usando o ID do processo (PID) da aplicação, veja este exemplo abaixo:
$ firefox &
$ ps | grep firefox
14917 pts/6 00:00:00 firefox
$ disown 14917
O aplicativo agora é executado independentemente do terminal que você está usando, e fechar o terminal não encerrará mais o aplicativo.
Mas como você pode fazer isso automaticamente sempre que iniciar um aplicativo?
Responder1
A maneira mais simples é executar:
daemon firefox
para que você possa continuar usando/fechando o próprio terminal
Responder2
EDITAR: ummelhor respostafoi fornecido por IV.
Para fazer isso automaticamente, você pode usar um alias do bash. Se você adicionar as seguintes linhas ao seu arquivo .bash_aliases em seu diretório inicial, poderá iniciar qualquer aplicativo my_application
a partir do terminal enquanto o coloca automaticamente em segundo plano e posteriormente o rejeita nesse terminal, usando o comando s my_application
:
# start programs from shell but immediately disown them
startAndDisown() {
$1 & disown $!
}
alias s=startAndDisown
Observe que $!
retorna automaticamente o PID do último trabalho assíncrono.
Responder3
firefox & disown $!
não funciona para mim, mas uma solução semelhante que funciona para mim éfirefox&;disown
Outra solução que não envolve disown
é usar o GNU Screen. Isso preservará sua sessão do terminal mesmo se você fechar a janela do terminal. No entanto, sua praticidade depende de como você usa seu terminal. Se você usar apenas uma janela de terminal por vez, esta é uma ótima solução. Se você usar mais terminais, menos. Instale a tela usando seu gerenciador de pacotes favorito e sempre que você abrir um tipo de terminal screen -r
(ou screen
se nenhuma sessão de tela estiver em execução). Você então não precisa se preocupar em fechar seu terminal. Esta é uma solução muito específica, mas pode servir para você.