Pular para o conteúdo

Processos de usuário em segundo plano e como manipulá-los

Dica publicada em Linux / Comandos
Daniel Zaia Manzano dzm_linux
Hits: 79.257 Categoria: Linux Subcategoria: Comandos
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Processos de usuário em segundo plano e como manipulá-los

Seja como usuário comum ou como root, podemos executar processos em segundo plano, para desfrutar do sistema multi-tarefas e deixar o prompt livre para outras atividades.

Os comandos/combinações para manipular processos em segundo plano, são:
  • rfg :: coloca o processo em primeiro plano (foreground).
  • bg :: coloca o processo em segundo plano (background).
  • jobs :: lista os processos correndo em segundo plano, ou apenas pausados/parados.
  • & :: o caractere "E comercial" colocado ao final de um comando, faz com que o mesmo rode em segundo plano desde o início.
  • Ctrl+c :: mata o processo atual ativo.
  • Ctrl+z :: pausa/para o processo atual ativo.

Vamos tomar como exemplo, o comando:

ping -c 120 127.0.0.1 &>/dev/null

Este comando realiza um ping na interface de loopback da própria máquina, com 120 repetições, e tanto a saída normal quanto a saída de erros, vai para o arquivo "/dev/null". Ou seja, é um comando que apenas vai "travar" o prompt, servindo aos propósitos desta dica.

Primeiramente, vamos iniciar o comando em primeiro plano, pausá-lo pressionando a combinação Ctrl+z, visualizá-lo com jobs e colocá-lo em segundo plano com bg:

ping -c 120 127.0.0.1 &>/dev/null
^Z
[1]+  Parado     ping -c 120 127.0.0.1 &>/dev/null

$ jobs

[1]+  Parado     ping -c 120 127.0.0.1 &>/dev/null

$ bg %1

[1]+ ping -c 120 127.0.0.1 &>/dev/null &

$ jobs

[1]+  Executando ping -c 120 127.0.0.1 &>/dev/null &

$

Ao rodar o comando jobs, cada processo recebe um número (independente do PID). Desta forma, usamos esta numeração para dizer qual processo queremos retomar, colocar em segundo plano (como acima) ou terminar.

Agora, vamos iniciar o processo, já em segundo plano, colocando o "&" ao final da linha, visualizá-lo com "jobs", colocar em primeiro plano com "fg", e em seguida, terminar o processo com a combinação Ctrl+c.

ping -c 120 127.0.0.1 &>/dev/null &
[1] 24771

$ jobs

[1]+  Executando   ping -c 120 127.0.0.1 &>/dev/null &

$ fg %1

ping -c 120 127.0.0.1 &>/dev/null

^C

$

Para terminar um processo rodando em segundo plano:

ping -c 120 127.0.0.1 &>/dev/null &
[1] 24775

$ jobs

[1]+  Executando  ping -c 120 127.0.0.1 &>/dev/null &

$ kill %1

$ jobs

[1]+  Terminado   ping -c 120 127.0.0.1 &>/dev/null

$

Obs.: também é possível terminar um processo em segundo plano pelo seu PID.

Curiosidade:- Experimente rodar o seguinte comando:

ping 127.0.0.1 &

* Já alerto que ele é inofensivo e pode ser resolvido utilizando apenas os conhecimentos adquiridos nesta dica.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Como alterar o nome da interface de rede

Debian - Versão da distribuição

Liberando memória RAM ociosa

PrintScreen em modo texto

FIGlet - Letras grandes no modo texto

O comando recode

Convertendo arquivo para PDF no terminal

Visual Studio Code disponível como SNAP para suportar distros Linux

Obter IP e MAC Address da rede inteira salvando em log

Limitando velocidade de download

#1 Comentário enviado por JunioRibeiro em 03/09/2015 - 11:29h

Excelente dica meu brow, eu estava com estava com algumas dificuldades aqui quando tentava rodar alguns processos em segundo plano e sua dica me deu a solução, vlw mesmo!!!!
#2 Comentário enviado por biophas em 21/04/2016 - 14:20h
Parabéns Daniel, uma bela contribuição.

#3 Comentário enviado por vandomen em 06/08/2016 - 01:20h
Boas Dicas, obrigado por contribuir.
#4 Comentário enviado por dan108 em 10/08/2016 - 09:33h
Mano uma duvida. Quando eu coloco o procedimento para rodar em bg ele continua dando retorno na minha tela do fg. Por exemplo:


$ ping google.com &
[1] 6896

$ PING google.com (177.35.32.87) 56(84) bytes of data.
64 bytes from b1232057.virtua.com.br (177.35.32.87): icmp_seq=1 ttl=61 time=9.27 ms
64 bytes from b1232057.virtua.com.br (177.35.32.87): icmp_seq=2 ttl=61 time=8.94 ms
f64 bytes from b1232057.virtua.com.br (177.35.32.87): icmp_seq=3 ttl=61 time=8.73 ms
g 64 bytes from b1232057.virtua.com.br (177.35.32.87): icmp_seq=4 ttl=61 time=12.1 ms
164 bytes from b1232057.virtua.com.br (177.35.32.87): icmp_seq=5 ttl=61 time=9.15 ms
64 bytes from b1232057.virtua.com.br (177.35.32.87): icmp_seq=6 ttl=61 time=9.13 ms
....


Eu consigo entrar com os comando e rodar mas ainda continua aparecendo a saída do procedimento. Tem como arrumar isso ou é assim mesmo ?
Se alguém poder me dar uma mão. OBS não é só com o ping q da problema, acontece com todos os programas.
#5 Comentário enviado por dzm_linux em 16/09/2016 - 00:13h
Amigo, é o seguinte:

Quando você executa um processo em segundo plano, você faz com que a sua execução naquele momento não interfira em outras tarefas que você possa executar. Ou seja, o prompt fica liberado.

Entretanto, isso não interfere na saída visual do processo, de forma que comandos com saída visual continuarão, por padrão, a sair para a tela.
Isso é completamente normal.

Se, por algum acaso, você se deparou com um ping em segundo plano, tente entender que o prompt está essencialmente liberado, ainda que visualmente não pareça.
Para cancelar este processo em segundo plano, basta executar 'kill %1', mesmo que isso apareça fora de ordem na tela.

Espero ter esclarecido sua dúvida.

Abs,
#6 Comentário enviado por reiGMF em 29/06/2018 - 00:50h
Cara otimo tutorial ! ajudou muito mesmo, obrigado!
#7 Comentário enviado por removido em 03/03/2019 - 11:58h
Olá, camaradas.
Criei um script bem simples para iniciar uma música e que fica em segundo plano quando o executo com dois clicks, porém quando vou ao terminal não sei trazê-la para o primeiro plano. E quando é executada pelo terminal, o terminal a mostra porém não posso usá-lo pois a todo instante mostra informação sobre a música. Digito "jobs" e não aparece nada, mesmo executando pelo terminal.
ex: mpv --no-video /home/user/Música/ &

Contribuir com comentário

Entre na sua conta para comentar.