Revista Do Linux
 
EDIÇÃO DO MÊS
 CD do Mês

 Capa
 Serviço Público
 Estudo de Caso
 Corporativo
 Negócios
 Software
 Tutorial
 Seguranca
 Comandos Avançados
 Internet
 Entrevista
 Hardware
 Portateis
 
 
 
<IMG> Comandos avançados
<IMG> Gerenciando Processos
 
<IMG> Entenda como os processos
<IMG> podem ser administrados em
<IMG> um sistema operacional Linux
 
<IMG> Você sabe o que é um processo? Já tentou criar um? Sabe como lidar com eles? Pois é, se você tem alguma dúvida sobre as perguntas acima, então a dica é para você.
<IMG> Qualquer tarefa atribuída ao Linux é um processo. Você deve estar se perguntado agora: Como assim? Um ‘ls’ é um processo? A resposta é: sim! Todo comando executado no Linux gera um número de processo (PID) e através desse número podemos manipular o processo. Temos diversos aplicativos que fazem essas manipulações. (Por exemplo: (top, jobs, nice, kill, killall, nohup, bg, fg, ps, renice, etc...). Já sabemos que para criar um processo, basta executar um comando. Vamos, porém, executar um que não ficará sozinho, pois, assim, fica mais fácil visualizar suas propriedades.
<IMG> Execute:
 
<IMG> # vi
 
<IMG> Agora, em outra seção, digite:
<IMG> # ps x |grep vi
<IMG> 1851 tty3 S 0:02 vi
 
<IMG> O comando ps lista os processos atuais. Temos diversos parâmetros para este comando, mas vou citar apenas dois: o ps sem parâmetro lista todos os processos do tty atual, a opção ‘x’ lista todos os processos da máquina e a opção ‘u’ inclui o autor do processo.
 
<IMG> # ps ux |grep vi
<IMG> root 1851 0.1 4.0 5356 2524 tty2 S 15:32 0:00 vi
 
 
<IMG> Observe que no primeiro exemplo tivemos um retorno, e, na primeira coluna do retorno, temos um número: o número do processo do comando vi (1851). Podemos criar processos em background, bastando colocar o caractere ‘&’ na frente do comando, mas é claro que não usaremos um editor de texto em background.
 
<IMG> # find / -name *.c &
 
<IMG> Podemos visualizar nossos processos em background com o comando jobs.
 
<IMG> # jobs
<IMG> [1]+ Running find / -name *.c &
 
<IMG> Podemos também tirar o processo do background usando o comando ‘fg’ :
 
<IMG> # fg
 
<IMG> Quando temos apenas um job em background, não precisamos especificar qual job queremos trazer para nosso controle ‘foreground’, mas quando temos mais que um, precisamos especificar o número do job, que aparece entre colchetes ‘[]’.
 
<IMG> # jobs
<IMG> [1]- Running find / -name *.c
<IMG> [2]+ Running find / -name *.h
 
<IMG> Após assumir o job com o comando fg, você pode colocá-lo novamente em background, bastando apenas pressionar as teclas CTRL+Z e, em seguida, executar o comando bg. Se você pressionar o CTRL+Z e não chamar o bg, seu processo ficará parado.
 
<IMG> # jobs
<IMG> [1]+ Stopped find / -name *.c
 
<IMG> Podemos usar o CTRL+Z em qualquer aplicativo que não utilize esta combinação de teclas. Tente fazer isso de dentro do editor ‘vi’.
 
<IMG> # vi
<IMG> <tecle CTRL+Z>
<IMG> [1]+ Stopped vi
 
<IMG> Para voltar ao vi, digite:
 
<IMG> # fg
 
<IMG> Podemos matar nossos jobs com o comando kill, especificando o número do job na frente do comando, desta forma:
 
<IMG> # kill %1
<IMG> [1]- Terminado vi
 
<IMG> Com o kill também podemos matar outros processos, bastando especificar o número do processo na frente do comando:
 
<IMG> # kill <número do processo>
 
<IMG> Para descobrir o número, utilize o comando ‘ps’.
<IMG> Agora, se precisarmos matar vários processos que possuam o mesmo nome, podemos utilizar o comando killall. Este comando recebe como parâmetro o nome do processo, e não o seu número.
 
 
<IMG> # killall vi
 
<IMG> Processos executados por usuários são derrubados quando se faz um logout. Quando precisamos manter um processo em atividade, mesmo após o logout, precisamos executá-los imunes a hungup. Para isso usamos o nohup.
 
<IMG> # nohup tar -cf backup.tar / &
 
<IMG> Executando este comando acima você poderá efetuar seu backup sem se manter logado. Toda a saída de erros ou stdout será jogada em um arquivo ‘nohup.out’ no diretório atual em que foi executado o comando.
<IMG> Todos os processos em Linux têm prioridades que vão de 19 (menos significativa) a -20 (mais significativa). A prioridade default de um processo em execução pelo usuário é ‘zero’. Um usuário comum pode alterar a prioridade default de seu processo de 0 a 19, já o usuário root pode alterar as prioridades dos processos de qualquer usuário de 19 a -20.
<IMG> Para alterar essas prioridades temos duas maneiras:
<IMG> 1) Executar um comando com prioridade não default utilizando o ‘nice’.
<IMG> 2) Alterar a prioridade do processo depois que ele estiver rodando com o comando ‘renice’.
<IMG> Para executar um comando com prioridade não default você pode utilizar:
 
<IMG> # nice -19 tar -cf backup.tar /
 
<IMG> Observe que para alterar uma prioridade negativa você precisa colocar dois hífens no parâmetro:
 
<IMG> # nice —19 tar cf backup.tar /
 
<IMG> Podemos também alterar a prioridade de um processo que já está em execução, usando o ‘renice’:
 
<IMG> # renice <nova_prioridade> -p <numero_do_processo>
 
<IMG> # renice -20 -p 1351
<IMG> 1351: prioridade antiga = 0; prioridade nova = -20
 
<IMG> Também é possível fazer o monitoramento on-line de todos os processos, com o comando ‘top’, veja Figura 1.
<IMG> Na verdade, o top não é um simples monitor de processos, é um gerenciador interativo de processos.
<IMG> Veja alguns comandos do top:
<IMG> k = mata um processo
<IMG> s = altera o delay do update
<IMG> i = ignora processos zombie
<IMG> r = altera a prioridade (renice)
<IMG> n = altera a quantidade de processos a ser mostrado (0 = todos)
<IMG> u = mostra os processos de um determinado usuário
<IMG> É claro que o que foi passado nesta edição está longe de ser o único e/ou o melhor material sobre processos, mas com certeza agora você pode se aventurar a conhecer melhor como eles funcionam.
 
 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux