Como executar uma tarefa em segundo plano?

Como executar uma tarefa em segundo plano?

É possível executar uma tarefa ou script iniciado no terminal em segundo plano?

Responder1

Existem várias respostas aqui, dependendo do que você deseja (esta resposta é válida em shells bashe zshshells, outras podem variar).

Se você precisa executar um comando em segundo plano e sabe disso antes de executá-lo, basta adicionar um &no final do comando (usando sleep 60, não faça nada durante 1 minuto, como exemplo de comando):

[romano:~] % sleep 60 &
[1] 9054
1& [romano:~] %

Se você já o executou, você pode interrompê-lo com ctrl- Ze, quando o shell fornecer um prompt, você poderá colocá-lo em segundo plano com o comando bg:

1& [romano:~] % sleep 60  
^Z
[1]  + 9084 suspended  sleep 60
1z [romano:~] 20 % bg
[1]  + 9084 continued  sleep 60
1& [romano:~] % 

Em ambos os casos, o processo/trabalho ainda está anexado ao seu terminal; se você fechar seu terminal adesligar(HUP) é enviado ao processo --- a maioria dos processos sairá normalmente. Se precisar garantir que o processo continuará, você pode iniciá-lo com:

nohup sleep 60 & 

ou, depois de enviá-lo para segundo plano com bgou com um simples &, diga ao shell para esquecê-lo, com:

disown %% 

( %%é umcontrole de trabalhoatalho, e aqui representa o último processo enviado em segundo plano).

Então você tem que levar em conta a saída do processo --- nos dois primeiros casos a saída ainda chegará ao terminal; no caso dele nohupserá desviado para um arquivo chamado nohup.out, e no último caso (com disown) irá para o terminal a menos que você o feche, caso em que o comportamento é bastante indefinido. É uma boa prática cuidar da saída de um processo em segundo plano usandoredirecionamento.

Responder2

adicione &ao comando.

Exemplo:

$ cp FromA ToB &

Responder3

Este exemplo executará atualizações em segundo plano:

sudo apt-get dist-upgrade -y &

Basta observar o singe &.
Se você quiser ocultar o stdout, faça o seguinte:

sudo apt-get dist-upgrade -y > /dev/null &

Responder4

Se você quiser mais avançado e quiser usar a sessão posteriormente localmente ou por SSH, você pode usar screen.

# screen
# apt-get update -y

Em seguida, pressione CTRL+ Aseguido de D.

Mais tarde você pode reanexar:

# screen -rd

informação relacionada