| Subcribe via RSS

Curso de Linux Básico – Parte 8

March 7th, 2008 Posted in Curso Linux Basico


Hoje vamos aprender a gerenciar processos. Iniciar, finalizar e controlar o funcionamento de programas no sistema Linux.

Todos os programas rodando em um sistema Linux são processos. Os comandos, os serviços, e os programas. Esses processos recebem uma identificação ao serem inicializados, e podem ser finalizados caso executem alguma operação irregular.

Para sabermos quais são os números dos processos executados no momento utilizamos o comando “ps”.

ps

Sintaxe

# ps [options]

Exemplo:

# ps -e (a opção -e exibe os processos no modo mais simples)
PID TTY TIME CMD
1? 00:00:01 init
2? 00:00:01 ksoftirqd/0
3? 00:00:00 events/0
4? 00:00:00 khelper
5? 00:00:00 kthread

17301 ? 00:00:15 smbd
21893 ? 00:00:01 smbd
21928 ? 00:00:01 smbd
22986 ? 00:00:09 smbd
25926 ? 00:00:00 sshd
25933 pts/1 00:00:00 bash
27305 pts/1 00:00:00 xterm
27353 pts/2 00:00:02 kwrite

Vemos aqui que existe um processo chamado “init”. O init será sempre o primeiro processo e será sempre o de PID 1. PID é a identificação do processo (Process Identifier).

Caso você queira terminar o processo, ou finalizá-lo, podemos mandar uma série diferente de instruções de finalização, desde uma instrução para reiniciar o processo até uma instrução para tirar o processo da memória do sistema. Alguns dos tipos de finalização de processos mais conhecidos são:

  • HUP ou 1 – Termina ou reinicia o processo
  • TERM ou 15 – Finaliza o processo
  • KILL ou 9 – Força a finalização do processo

Estado dos processos

Em certos momentos os processos no Linux podem estar em situações de execução diferentes. O Linux trabalha com quatro tipos de estados:

Executável: o processo pode ser executado imediatamente;
Dormente: o processo precisa aguardar alguma coisa para ser executado. Só depois ele passa para o estado executável;
Zumbi: o processo é considerado “morto”, mas, por alguma razão, ainda existe;
Parado: o processo está “congelado”, ou seja, não pode ser executado.

Comandos nice e renice

Um processo pode ter prioridade em relação a outros em sua execução. Um processo “legal”, oferece a gentileza de permitir que um processo com prioridade maior que a sua seja executado antes dele. Quanto mais alto for o valor nice, mais “legal” é o processo. O intervalo de números usados no nice são os inteiros entre -19 e 19.

Para determinar a prioridade de um processo, utiliza-se um comando nice.

Sintaxe:

# nice -n prioridade processo

Por exemplo:

# nice -n -5 httpd

No exemplo, o httpd recebe prioridade -5.

Para alterar a prioridade de um processo em execução utilizamos o comando renice.

Sintaxe:

# renice prioridade opção processo/destino

As opções do renice são:

-u - a alteração ocorrerá nos processos do usuário informado;
-g – a alteração ocorrerá nos processos do grupo indicado;
-p – a alteração ocorrerá no processo cujo PID for informado.

Um exemplo:

# renice +19 1550 -u infowester

Aqui, o comando renice alterou a prioridade do processo 1550 e de todos os processos do usuário vidalinux.

kill, killall

Vamos imaginar que o processo do programa kwrite travou. Para finalizarmos este processo usaremos o comando kill ou killall.

Sintaxe:

# kill [-s SIGNAL | -SIGNAL] PID
# killall [opções] name

Exemplos:

# kill 27353 (assim finalizamos o processo)
# kill -9 27353 (o -9 é utilizado para finalizarmos processos travados)
# killall kwrite (finalizando o processo pelo nome. Assim finalizamos TODOS os kwrite´s)

top

Existe um outro programa que pode ajudar no gerenciamento de processos no Linux, é o top. Ele é uma ferramenta que exibe algumas informações adicionais como uso de CPU e memória, além de podermos visualizar em tempo real quais programas estão exigindo mais do nosso sistema.

# top

top – 09:20:04 up 11 days, 1:08, 2 users, load average: 0.82, 1.12, 1.30
Tasks: 137 total, 1 running, 136 sleeping, 0 stopped, 0 zombie
Cpu(s): 20.3%us, 1.7%sy, 0.0%ni, 73.3%id, 3.7%wa, 0.3%hi, 0.7%si, 0.0%st
Mem: 449732k total, 443828k used, 5904k free, 3648k buffers
Swap: 1309256k total, 245416k used, 1063840k free, 146396k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9655 emarte 15 0 378m 172m 24m S 16.6 39.2 1430:36 firefox-bin
9163 root 15 0 147m 52m 3712 S 3.3 11.9 123:08.10 Xorg
28385 root 16 0 4900 2088 1592 S 2.3 0.5 0:16.66 ssh
9346 emarte 15 0 38224 12m 6832 S 0.3 2.8 0:35.19 konsole

Com o top você também pode finalizar tarefas, basta digitar a letra “k”, ele irá solicitar o PID do processo e qual tipo de finalização você deseja.

Processos em segundo plano

Quando estamos num terminal, queremos utilizar algum comando/aplicação e necessitamos ainda do terminal livre, podemos executar o que queremos em segundo plano. É muito simples, veja:

# comando &

Simplesmente adicione o caracter & ao final do comando/aplicativo que você quer executar. Acho interessante quando estamos no X e queremos abrir uma aplicação diretamente do terminal. Veja:

# kcalc &
#

Executou o kcalc (calculadora) e o shell continuou livre. Veja outro exemplo em que rodei uma aplicação e o shell ficou ocupado, então, mesmo depois disso, há como fazê-lo ficar em background (segundo plano), veja:

$ su -c xcdroast
passwd:

Depois de ter fornecido a senha, ele ficou ali, estático, e o xcdroast permaneceu aberto. Como eu queria ter o shell livre, utilizei (no bash):

Ctrl + z
[1]+ Stopped su -c xcdroast

Então, ele volta ao shell, e aqui eu forneço o comando:

# bg
[1]+ su -c xcdroast &

O programa continua executado e o shell livre. Caso eu queria voltar o programa para foreground, é só utilizar o comando:

# fg
su -c xcdroast

E o shell fica novamente ocupado. Podemos fazer também o X iniciar em segundo plano (caso você utilize inicialização em modo texto e use o comando `startx’ para entrar em modo gráfico), veja:

# startx 2>&1 > /dev/null &

Você pode adicionar também essas informações ao arquivo /etc/profile, como um alias:

alias startx=”startx 2>&1 > /dev/null &”

Bom pessoal, espero que tenha ajudado vocês a entender como funciona o gerenciamento de processos no Linux.

Leave a Reply

Get Adobe Flash playerPlugin by wpburn.com wordpress themes