June 6th, 2008
Quando trabalhamos em modo texto no linux, muitas vezes temos a necessidade de roda um outro programa, para obter alguma informação especifica. Em casos que o usuário esta usando o ambiente gráfico, ele pode a qualquer momento abrir um novo terminal ou uma nova aba caso o terminal que esteja sendo usado tenha suporte a abas. E quando o usuário esta usando o modo texto(tty1) ? Bom neste caso ele tem mais 5 terminais do tty2 ao tty6, neste caso eu já estaria convencido em usar os recursos dos Jobs, mas alguns ainda vão dizer que para isso os jobs não possuem utilidade. Então, e se você estiver acessando um servidor via SSH, o que vai fazer ? abir uma nova conexão para cada novo processo ? Eu acredito que não!
Bom, o que é, e como funciona esse tal de jobs ?
É bem simples, abra um terminal (tty1, gnome-terminal, konsole, xterm) e faça:
gustavo@gustavo-laptop:~$ nano
Você vai ter a tela a baixo:

Agora você quer abrir um outro arquivo, mas não quer fechar esse que você esta editando no momento. Então você agora deve acionar a seguinte combinação de teclas:
Ctrl Z
Isto colocara sua aplicação em background, você vera na tela algo assim:

agora faça:
gustavo@gustavo-laptop:~$ nano /etc/mtab

Agora que você viu a informação desejada, e que voltar ao arquivo anterior, mas não quer fechar esse ainda. Faça novamente:
Ctrl Z

E agora, como faço para saber quais aplicações estão em background e como faço para trazer ela para o foreground ? Simples, execute este comando:
gustavo@gustavo-laptop:~$ jobs

Bom, agora você já sabe que o comando jobs nos mostra as aplicações que estão em background, e agora como trazer ela para o foreground?
Para trazer um aplicação para foreground usamos o comando fg, e se você percebeu, quando pressionamos ctrl z e quando chamamos o comando jobs, antes do nome do aplicativo que esta em background aparece um numero entre colchetes, ex: [1], é exatamente isso que você esta pensando, esse numero representa esta aplicação que esta ao lado dele. Agora faça:
gustavo@gustavo-laptop:~$ fg 1
você voltará a aplicação que você havia iniciado no inicio deste post
Agora você já consegue trabalhar com várias aplicações ao mesmo tempo, agora vamos ver a utilizacão de jobs em um outro caso. Você esta vai fazer o download do firefox novo, e vai usar o wget no terminal.
Então abra um terminal e digite:
gustavo@gustavo-laptop:~$ wget http://tinyurl.com/58euhq
Neste momento você tem que aguardar o termino do download, então você pensa "vou colocar em background", parabéns, só que faça o teste agora, execute a linha a cima, olhe a porcentagem do download e pressione ctrl z, agora aguarde um minuto.
….
Estamos aguardando um minuto com você.
….
Pronto, agora você já sabe o que fazer traga a aplicação para foreground:
gustavo@gustavo-laptop:~$ fg 1
Perceba que o download ainda não acabou e não evoluiu, e agora? As aplicações em background não funcionam? Funcionam sim. Para isso, após pressionar ctrl z, precisamos ativar a aplicação em backgroud com o comando bg. Observe:
gustavo@gustavo-laptop:~$ wget -nv http://tinyurl.com/58euhq

Observe que agora tem o parâmetro -nv no comando wget, para ele não mostrar o andamento na tela, em seguida faça: ctrl z

Olhe a linha e observe "Stopped" quando colocamos a aplicação em background ele pausa a aplicação e para isso usamos o bg para mandar continuar executando a tarefa em background
Veja:
gustavo@gustavo-laptop:~$ bg 1

Em seguida:
gustavo@gustavo-laptop:~$ jobs

Pronto veja que agora ao invés de "Stopped" esta "Running"
Caso você queira iniciar um aplicação em background basta adicionar ao final da linha &. Veja:
gustavo@gustavo-laptop:~$ wget http://tinyurl.com/58euhq &

Em seguida:
gustavo@gustavo-laptop:~$ jobs

Pronto, espero ter conseguido explicar o uso dos Jobs em background. Qualquer coisa faça um comentário. :)
Tags: Bash, bg, fg, jobs, Linux, ubuntu
Postado em Informática, Linux, Sistemas Operacionais, Software Livre | 2 Comentários »