Qual é a (s) vantagem (s) de executar aplicativos em backgound?

1

Eu realmente não sei quais são as vantagens de executar aplicativos em segundo plano.
Algo como Application & via linha de comando.

Por que exatamente executamos aplicativos em segundo plano e quando devo decidir fazê-lo?

    
por αғsнιη 15.10.2014 / 07:37

2 respostas

3

Em geral, os aplicativos que demoram muito para serem executados e o dosent requer interação do usuário são enviados para o segundo plano para que possamos continuar nosso trabalho no terminal.

As tarefas em segundo plano são tratadas da mesma forma que as tarefas em primeiro plano, exceto que as variáveis STDOUT, STDIN e STDERR.

Se você tiver um trabalho demorado, como compactação de arquivos ou backup, poderá enviar esses trabalhos para o segundo plano.

Você pode listar os trabalhos em execução em segundo plano usando o comando jobs .

$ ./job1.sh &
[1] 9747
$ ./job2.sh &
[2] 9749
$ ./job3.sh &
[3] 9751
$ jobs
[1]   Running                 ./job1.sh &
[2]-  Running                 ./job2.sh &
[3]+  Running                 ./job3.sh &

Aqui, sempre que um trabalho é enviado para o background shell, é exibido o job id e pid do processo. Se quisermos que o processo volte ao primeiro plano, podemos usar o comando fg para trazê-lo de volta.

$ fg 1
./job1.sh

Mas esteja ciente de que quando você fechar o terminal (shell), o SIGHUP será enviado para todo o processo em segundo plano que é gerado a partir do shell, fazendo com que esses processos morram. Para evitar isso, você pode usar o comando disown para remover esse processo da tabela de tarefas e, assim, evitar que o processo seja morto.

a melhor maneira é iniciar o processo em segundo plano com o comando nohup para que os sinais SIGHUP não matem o processo e ele será executado em segundo plano.

Impedir que o SIGHUP seja enviado para processos filhos (tarefas bg) também pode ser evitado configurando a opção huponexit do shell bash.

$ shopt -s huponexit

Esta opção é configurada por padrão nas versões mais recentes do Bash, mas se ela não estiver definida, podemos adicionar isso ao ~/.bashrc para torná-lo um comportamento padrão.

    
por 15.10.2014 / 08:00
0

Se você executar um aplicativo que precisa - digamos 5 minutos para terminar, por exemplo, um trabalho de cópia - o shell é bloqueado enquanto o programa está em execução, durante 5 minutos. O trabalho de cópia está, então, no chamado grupo de processos em primeiro plano, indicado por um sinal + em ps . Você pode precisar fazer algum outro trabalho durante esses 5 minutos, mas o shell está bloqueado.

Por outro lado, quando você executa o trabalho de cópia em segundo plano ( cp source target & ), o job é executado em segundo plano sem bloquear o shell atual. Você pode continuar com outras coisas. Você pode trazer o processo de volta ao primeiro plano com fg , se desejar.

    
por 15.10.2014 / 07:57