Sei sulla pagina 1di 78

Processos no Linux

Agenda:
Introduo

Informaes de um Processo

Comandos

Introduo

Introduo
Nos sistemas operacionais, um processo a forma de
representar um programa em execuo.
o processo que utiliza os recursos do computador processador, memria, etc - para a realizao das tarefas
para as quais a mquina destinada.
Veremos os principais conceitos relacionados a processos
no Linux e as ferramentas usadas para manipul-los e
gerenci-los

Introduo
O sistema operacional lida com uma infinidade de processos
e, por isso, necessrio ter meios que permitam controllos.

Para isso, os
processos contam
com um conjunto
de caractersticas,
dentre as quais:

Proprietrio do processo;
Estado do processo (em espera,
em execuo, etc);
Prioridade de execuo;
Recursos de memria.

Introduo
O trabalho de gerenciamento
de processos precisa contar
com essas informaes e com
vrias outras.
Uma das informaes usadas
atribuir a cada processo um
PID.

Modos de execuo
Em Unix, um
processo
executa em 2
modos:
Cada
processo tem
memria
virtual:

Modo Kernel
Modo User

kernel ou system space: partilhada por todos


os processos.
memria privada: (pilha, bss).
memria partilhada: cdigo, bibliotecas
partilhadas, mmap
Privadas mas controladas pelo kernel: rea-u
e pilha do kernel.

Execuo
Um programa
pode ser
executado de duas
formas:

1) Primeiro Plano

2) Segundo Plano

Tambm chamado
de foreground.

Tambm chamado
de background.

Foreground

Quando voc deve esperar


o trmino da execuo de
um programa para executar
um novo comando.

Somente mostrado o
aviso de comando aps o
trmino de execuo do
comando/programa.

Background
Usado quando
no se precisa
esperar o
trmino da
execuo de
um programa
para executar
um novo
comando.

Aps iniciar um programa em background,


mostrado um nmero PID (identificao
do Processo) e o aviso de comando
novamente mostrado, permitindo o uso
normal do sistema.
O programa executado em background
continua sendo executado internamente.
Aps ser concludo, o sistema retorna uma
mensagem de pronto acompanhado do
nmero PID do processo que terminou.

Informaes de um Processo

Informaes de um Processo
Espao de
Endereamento
do Usurio:

Informao de
controle:

texto;

rea-u;

Credenciais:

Variveis de
Ambiente

Contexto de
Hardware:

PC,
UIDs,
SP,

dados;

proc;
PSW (processor
status word),

pilha do
usurio;

pilha modokernel;

mem regs,
GIDs.

memria
partilhada.

mapa de
traduo de
endereos.

FPU regs.

A rea-U
PCB (process control block): armazena o contexto de hardware quando o processo no
est ativo.
pointer to proc;
UID e GID real e efetivo;
argumentos e resultado da syscall corrente;
signal handlers; (manipuladores de sinais)
info sobre texto, dados e pilha, mais gesto de memria;
FD abertos (dinmico ou esttico);
n-v do directrio corrente e do terminal currentel
estatsticas (CPU, profiling, quota);

Pilha modo-kernel.

PID e PPID

Um PID (Process Identifier) um


nmero de identificao que o
sistema d a cada processo.

Para cada novo processo, um


novo nmero deve ser atribudo,
ou seja, no se pode ter um
nico PID para dois ou mais
processos ao mesmo tempo.

PID e PPID

Os sistemas baseados em Unix


precisam que um processo j
existente se duplique para que
a cpia possa ser atribuda a
uma tarefa nova.

Quando isso ocorre, o


processo "copiado" recebe o
nome de "processo pai",
enquanto que o novo
denominado "processo filho".

PID e PPID

nesse ponto que o PPID (Parent Process Identifier)


passa a ser usado: o PPID de um processo nada mais
do que o PID de seu processo pai.

UID e GID
Conforme j mencionado, cada processo precisa de um
proprietrio, um usurio que seja considerado seu dono.
A partir da, o sistema saber, atravs das permisses
fornecidas pelo proprietrio, quem pode e quem no pode
executar o processo em questo.
Para lidar com os donos, o sistema usa os nmeros UID e
GID.

UID e GID
O Linux gerencia os usurios e os grupos atravs de
nmeros conhecidos como UID (User Identifier) e GID
(Group Identifier). Como possvel perceber, UID so
nmeros de usurios e GID so nmeros de grupos.

Os nomes dos usurios e dos grupos servem apenas


para facilitar o uso humano do computador.

UID e GID
Cada usurio precisa pertencer a um ou mais grupos.
Como cada processo (e cada arquivo) pertence a um
usurio, logo, esse processo pertence ao grupo de seu
proprietrio.
Assim sendo, cada processo est associado a um UID e a
um GID.

UID e GID
Os nmeros UID e GID variam de 0 a 65536.
Dependendo do sistema, o valor limite pode ser maior.
No caso do usurio root, esses valores so sempre 0
(zero).

Assim, para fazer com que um usurio tenha os mesmos


privilgios que o root, necessrio que seu GID seja 0.

UID e GID

Efetiva: usada para


UID/GID
abrir arquivos.
real e
Real: usada para
efetiva. enviar sinais.

Comandos

Comandos Nice e Renice

Neste caso necessrio


entender o conceito de
gentileza.

Um processo pode ter


prioridade em relao a
outros em sua execuo.

Quando um processo
gentil, significa que ele
"oferece a gentileza" de
permitir que um
processo com prioridade
maior que a sua seja
executado antes dele.

Os nveis de gentileza,
tambm chamados de
nice, so determinados
atravs de nmeros.

Comandos Nice e Renice


Quanto mais alto for o valor nice, mais
gentil o processo.

Geralmente, o intervalo de nmeros usados


no nice so os inteiros entre -19 e 19.
Embora determinar a prioridade de um
processo no seja uma prtica comum, afinal,
o prprio Linux faz muito bem essa tarefa, isso
pode ser necessrio em alguma situao.
Para isso, utiliza-se um comando que recebe
o mesmo nome do conceito: nice.

Comandos Nice e Renice


A sintaxe :
nice -n prioridade processo

Por exemplo:

$ nice -n -5 casca

No exemplo, o processo casca recebe prioridade -5.


Trata-se de uma prioridade alta, afinal, como j dito, quanto
menor o nmero menor sua gentileza.

Comandos Nice e Renice


Se um determinado processo est em execuo, isso acontece com uma prioridade j definida. Para alterar um
processo nessa condio, usa-se o comando renice, cuja sintaxe :

$ renice prioridade opo processo/destino

As opes do renice so:-u - a alterao ocorrer nos processos do usurio informado;

-g - a alterao ocorrer nos processos do grupo


indicado;

-p - a alterao ocorrer no processo cujo PID for


informado.

Um exemplo:
$ renice +19 1000 -u goma

Neste caso, o comando renice alterou a prioridade do processo 1000, assim como a prioridade dos processos do
usurio goma.

ps

ps
O ps um comando de extrema importncia para o gerenciamento
de processos.
Por ele, possvel saber quais os processos em execuo
atualmente, quais os UIDs e PIDs correspondentes, entre outros.
Se somente ps for digitado na linha de comando, geralmente o
sistema mostra quais os processos do usurio.
preciso usar uma combinao de opes para obter mais
detalhes.

ps

ps

As opes
mais
importantes
so os
seguintes:

a - mostra todos os processos existentes;


e - exibe as variveis de ambiente relacionadas aos
processos;
f - exibe a rvore de execuo dos processos;
l - exibe mais campos no resultado;
m - mostra a quantidade de memria ocupada por
cada processo;
u - exibe o nome do usurio que iniciou determinado
processo e a hora em que isso ocorreu;
x - exibe os processos que no esto associados a
terminais;
w - se o resultado de processo no couber em uma
linha, essa opo faz com que o restante seja exibido
na linha seguinte.

ps

Das opes
relacionadas, a
combinao mais
usada aux:

$ ps aux

Como exemplo, o
resultado obtido
com esse
comando foi o
seguinte:

ps
Usando a combinao
lax, o resultado mostra
mais detalhes:

$ ps lax

A seguir, v-se a descrio dos campos mostrados


anteriormente e alguns que s so mostrados com a
combinao lax: USER - nome do usurio dono do
processo;

ps
UID - nmero de identificao do usurio dono do processo;
PID - nmero de identificao do processo;

PPID - nmero de identificao do processo pai;


%CPU - porcentagem do processamento usado;
%MEM - porcentagem da memria usada;
VSZ - indica o tamanho virtual do processo;
RSS - sigla de Resident Set Size, indica a quantidade de memria usada (em KB);
TTY - indica o identificador do terminal do processo;
START - hora em que o processo foi iniciado;

ps
TIME - tempo de processamento j consumido pelo processo;
COMMAND - nome do comando que executa aquele processo;
PRI - valor da prioridade do processo;
NI - valor preciso da prioridade (geralmente igual aos valores de PRI);
WCHAN - mostra a funo do kernel onde o processo se encontra em
modo suspenso;

ps
STAT - indica o
estado atual do
processo, sendo
representado por
uma letra:
Essas letras
podem ser
combinadas e
ainda acrescidas
de:

R - executvel;
D - em espera no disco;
S - Suspenso;
T - interrompido;
Z - Zumbi.

W - processo paginado em disco;


< - processo com prioridade maior que o convencional;
N - processo com prioridade menor que o
convencional;
L - processo com alguns recursos bloqueados no kernel.

jobs
O comando jobs mostra os processos que
esto parados ou rodando em segundo plano.
Processos em segundo plano so iniciados
usando o smbolo & no final da linha de
comando
O nmero de identificao de cada processo parado
ou em segundo plano (job), usado com os
comandos fg e bg.
Um processo interrompido pode ser finalizado usandose o comando kill %[num], onde [num] o nmero do
processo obtido pelo comando jobs.

Exemplo vi&

O comando ser executado em segundo plano


e deixar o sistema livre para outras tarefas.
Aps o comando find terminar, ser mostrada
uma mensagem.

Parando um programa
Para iniciar um programa em primeiro plano,
basta digitar seu nome normalmente.
Para iniciar um programa em segundo plano,
acrescente o caracter & aps o final do
comando.
Mesmo que um usurio execute um programa
em segundo plano e saia do sistema, o programa
continuar sendo executado at que seja
concludo ou finalizado pelo usurio que iniciou a
execuo (ou pelo usurio root).
Exemplo: find / -name boot.b &

fg
Permite fazer um programa rodando em segundo
plano ou parado, rodar em primeiro plano.
Voc deve usar o comando jobs para pegar o
nmero do processo rodando em segundo plano
ou interrompida, este nmero ser passado ao
comando fg para ativa-lo em primeiro plano.
fg [nmero]
Onde nmero o nmero obtido atravs do comando
jobs.

bg
Permite fazer um programa rodando em primeiro
plano ou parado, rodar em segundo plano.
Para fazer um programa em primeiro plano rodar em
segundo, necessrio primeiro interromper a
execuo do comando com CTRL+ Z, ser mostrado o
nmero da tarefa interrompida, use este nmero com
o comando bg para iniciar a execuo do comando em
segundo plano.
bg [nmero]
Onde: nmero nmero do programa obtido com o
pressionamento das teclas CTRL+Z ou atravs do comando
jobs.

ps [opes]
Onde:
a

Mostra os processos criados por voc e de outros


usurios do sistema.
x
Mostra processos que no so controlados pelo
terminal.
u Mostra o nome de usurio que iniciou o processo e
hora em que o processo foi iniciado.
m Mostra a memria ocupada por cada processo em
execuo.
f
Mostra a rvore de execuo de comandos
(comandos que so chamados por outros comandos).
e
Mostra variveis de ambiente no momento da
inicializao do processo.
w
Mostra a continuao da linha atual na prxima
linha ao invs de cortar o restante que no couber na
tela.

top
Mostra os programas em execuo ativos, parados, tempo
usado na CPU, detalhes sobre o uso da memria RAM, Swap,
disponibilidade para execuo de programas no sistema, etc.
top um programa que continua em execuo mostrando
continuamente os processos que esto rodando em seu
computador e os recursos utilizados por eles.
Para sair do top, pressione a tecla q.

top

top [opes]
Onde:
-d [tempo ] Atualiza a tela aps o [tempo] (em
segundos).
-s Diz ao top para ser executado em modo seguro.
-i Inicia o top ignorando o tempo de processos
zumbis.
-c Mostra a linha de comando ao invs do nome do
programa.
A ajuda sobre o top pode ser obtida dentro do
programa pressionando a tecla h ou pela pgina
de manual (man top).

Lembre-se do man top...

top
possvel manipular alguns recursos do
comando top atravs das teclas do teclado.

Por exemplo, para atualizar imediatamente o


resultado exibido, basta pressionar a tecla de
espao.

Pressione a tecla h enquanto estiver


utilizando o top para ver a lista completa de
opes e teclas de atalho.

Fuser
O comando fuser
mostra qual
processo faz uso de
um determinado
arquivo ou diretrio.

Entre as opes,
tem-se:

Sua sintaxe :
fuser -opo caminho (do arquivo ou diretrio)

k - finaliza o processo que utiliza o arquivo/diretrio em questo;


-i - deve ser usada em conjunto com a opo k e serve para
perguntar se a finalizao do processo deve ser feita;
-u - mostra o proprietrio do processo;
-v - o resultado mostrado em um padro de exibio semelhante
ao comando ps.

pstree
Esse comando mostra
processos relacionados
em formato de rvore.

Entre as opes, temse:

Sua sintaxe :
pstree -opo PID

u - mostra o proprietrio do processo;


-p - exibe o PID aps o nome do processo;
-c - mostra a relao de processos ativos;
-G - usa determinados caracteres para exibir o resultado
em um formato grfico.

Se ao digitar o comando pstree o PID no for informado, todos os


processos sero listados.

NOHUP
O comando nohup possibilita ao processo ficar ativo mesmo quando o
usurio faz logout.
da natureza dos sistemas baseados em Unix interromper processos
caso seu proprietrio no esteja mais ativo, por isso, o nohup pode
ser muito til.
Sua sintaxe :

nohup comando

ls
Lista os arquivos de um diretrio.
3

onde:
caminho/arquivo Diretrio/arquivo que ser
listado.
caminho1/arquivo1 Outro Diretrio/arquivo que
ser listado. Podem ser feitas vrias listagens de
uma s vez.

ls
opes
-a, all Lista todos os arquivos (inclusive os ocultos) de um
diretrio.
-A, almost-all Lista todos os arquivos (inclusive os ocultos) de
um diretrio, exceto o diretrio atual e o de nvel anterior.
-B, ignore-backups No lista arquivos que terminam com ~
(Backup).
color=PARAM Mostra os arquivos em cores diferentes,
conforme o tipo de arquivo. PARAM
pode ser:
never - Nunca lista em cores (mesma coisa de no usar o parmetro
color).
always - Sempre lista em cores conforme o tipo de arquivo.
auto - Somente colore a listagem se estiver em um terminal.

-d, directory Lista os nomes dos diretrios ao invs


do contedo.
-f No classifica a listagem.
-F Insere um caracter aps arquivos executveis (*),
diretrios (/), soquete (=), link simblico
(@) e pipe (|). Seu uso til para identificar de
forma fcil tipos de arquivos nas listagens de
diretrios.
-G, no-group Oculta a coluna de grupo do arquivo.
-h, human-readable Mostra o tamanho dos arquivos
em Kbytes, Mbytes, Gbytes.

la

ls -la

-rwxr-xr-- 1 traina traina 8192 2012-02-15 16:00 teste

-rwxr-xr-- So as permisses de acesso ao


arquivo teste.
A primeira letra (da esquerda) identifica o tipo
do arquivo, se tiver um d um diretrio, se
tiver um - um arquivo normal.
As permisses de acesso sero explicadas em
detalhes futuramente.

-rwxr-xr-- 1 traina user 8192 2012-02-15 16:00 teste


1 Se for um diretrio, mostra a quantidade de subdiretrios existentes dentro dele. Caso for um arquivo, ser
1.
traina Nome do dono do arquivo teste.
user Nome do grupo que o arquivo teste pertence.
8192 Tamanho do arquivo (em bytes).
02 Ms da criao/ ltima modificao do arquivo.
15 Dia que o arquivo foi criado.
16:00 Hora em que o arquivo foi criado/modificado. Se o
arquivo foi criado h mais de um ano, em seu lugar
mostrado o ano da criao do arquivo.
teste Nome do arquivo.

free

time ls

Sinais de Processos

Sinais de Processos

Os sinais so meios usados para


que os processos possam se
comunicar e para que o sistema
possa interferir em seu
funcionamento.

Por exemplo, se o usurio


executar o comando kill para
interromper um processo, isso
ser feito por meio de um sinal.

Quando um processo recebe um


determinado sinal e conta com
instrues sobre o que fazer com ele, tal
ao colocada em prtica.
Se no houver instrues prprogramadas, o prprio Linux pode
executar a ao de acordo com suas
rotinas.

Entre os sinais existentes, tem-se os seguintes exemplos:


STOP - esse sinal tem a funo de interromper a execuo de um
processo e s reativ-lo aps o recebimento do sinal CONT;

CONT - esse sinal tem a funo de instruir a execuo de um


processo aps este ter sido interrompido;

SEGV - esse sinal informa erros de endereos de memria;

TERM - esse sinal tem a funo de terminar completamente o


processo, ou seja, este deixa de existir aps a finalizao;

ILL - esse sinal informa erros de instruo ilegal, por exemplo,


quando ocorre diviso por zero;

KILL - esse sinal tem a funo de "matar" um processo e usado


em momentos de criticidade.

Estado dos processos

Estado dos processos


Quando um processo criado, isso no
significa que ele ser imediatamente
executado.
Alm disso, determinados processos podem
ser temporariamente paralisados para que o
processador possa executar um processo
prioritrio. Isso quer dizer que os processos,
em certos momentos, podem estar em
situaes de execuo diferentes.

Estado dos processos


O Linux trabalha, essencialmente, com quatro tipos
de situao, isto , estados:
Executvel: o processo pode ser executado
imediatamente;
Dormente: o processo precisa aguardar alguma coisa
para ser executado. S depois dessa "coisa" acontecer
que ele passa para o estado executvel;
Zumbi: o processo considerado "morto", mas, por
alguma razo, ainda existe;
Parado: o processo est "congelado", ou seja, no
pode ser executado.

Estado dos processos

Estado dos processos


TASK_RUNNING: O processo est em
execuo na CPU ou aguardando em uma fila
de execuo para ser planejado.
TASK_INTERRUPTIBLE: O processo est
inativo, aguardando algum evento ocorrer.
O processo est aberto para ser interrompido
por sinais. Uma vez sinalizado ou ativado pela
chamada de ativao explcita, o processo faz
transio para TASK_RUNNING.

Estado dos processos


TASK_UNINTERRUPTIBLE: O estado do processo
semelhante a TASK_INTERRUPTIBLE exceto que
nesse estado ele no processa sinais.
Pode at no ser desejvel interromper o
processo enquanto nesse estado, pois ele pode
estar no meio da concluso de alguma tarefa
importante.
Quando o evento que ele est aguardando
ocorre, o processo ativado pela chamada de
ativao explcita.

Estado dos processos


TASK_STOPPED: A execuo do processo est
parada, ele no est em execuo e no est apto
para ser executado.
No recebimento de sinais como SIGSTOP, SIGTSTP,
e assim por diante, o processo chega nesse
estado. O processo seria executvel novamente
aps o recebimento do sinal SIGCONT.
TASK_TRACED: Um processo chega nesse estado
enquanto est sendo monitorado por outros
processos, como depuradores.

Estado dos processos


EXIT_ZOMBIE: O processo foi finalizado. Ele est
demorando simplesmente para seu pai coletar
algumas informaes estatsticas sobre ele.
EXIT_DEAD: O estado final (exatamente como
parece). O processo atinge esse estado quando
estiver sendo removido do sistema, pois seu pai
acaba de coletar todas as informaes estatsticas
emitindo a chamada do sistema wait4() ou
waitpid()

Voltaremos a esse assunto em


breve

Potrebbero piacerti anche