rejeitar automaticamente o aplicativo ao executá-lo a partir de um terminal

rejeitar automaticamente o aplicativo ao executá-lo a partir de um terminal

Como você rejeita automaticamente um aplicativo depois de iniciá-lo em um terminal?

Por exemplo: se você iniciar um terminal e executar firefoxo 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_applicationa 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 screense 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ê.

informação relacionada