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

2

Como você desativa 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 será fechado. Para evitar o fechamento não intencional de aplicativos que foram iniciados em um terminal, primeiro é possível colocá-los em segundo plano com o ampersant: firefox & , que também restaura a capacidade de usar o prompt desse terminal. Em seguida, você pode descartar o aplicativo desse mesmo terminal usando o ID do processo (PID) do aplicativo, 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 o fechamento do terminal não terminará mais o aplicativo.

Mas como você pode fazer isso automaticamente toda vez que inicia um aplicativo?

    
por PDiracDelta 21.05.2016 / 21:56

2 respostas

4

A maneira mais simples é executar:

daemon firefox

para que você possa continuar usando / fechando o próprio terminal

    
por 21.05.2016 / 22:15
1

EDIT: uma melhor resposta foi fornecida pela I-V.

Para fazer isso automaticamente, você pode usar um apelido bash. Se você adicionar as linhas a seguir ao seu arquivo .bash_aliases em seu diretório pessoal, poderá iniciar qualquer aplicativo my_application do terminal, colocando-o automaticamente no segundo plano e, em seguida, descartando-o desse 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.

    
por 22.05.2016 / 21:32