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:
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.
[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!!!!
[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.
[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/ &