Processos no Linux

Share

Processos

O intuito desse pequeno artigo é transmitir para vocês leitores de uma forma simples e clara sobre processos no GNU/LINUX. Irei abordar conceitos, finalização e visualização de processos.

 

Definição

Processos são aplicativos ou shell que estão sendo executados. Todo processo possui um identificador chamado PID (Identificador do Processo) e este pode a vir ser duplicado com o intuito de delegar novas tarefas para sua cópia, a duplicação de um processo resulta no processo filho e este possuirá um PPID ou (Identificador de Processo Pai) que nada mais é do que o PID do processo PAI.

 

A figura abaixo ilustra melhor a definição de PID e PPID.

processo1

O comando ps alx mostra a identificação dos processos  filhos (PID) e o processo pai (PPID).

 

processol1

 

 

O que um processo contém?

Um processo contém várias informações, através destas é possível visualizar o usuário, porcentagem do consumo de memória e processador dentre outras informações. Abaixo segue algumas características de um processo.

USER – O usuário que se iniciou o processo.

PID – O número de identificação do processo.

%CPU – Consumo do processador que o processo está rodando.

%MEM – Consumo de memória.

STAT – Estado do processo.

VSZ – Tamanho virtual do processo.

TTY – Identificador do terminal do processo.

RSS – Quantidade de memória (KB).

START – Data em que o processo foi iniciado.

COMMAND – Comando que esta em execução no processo.

Através do comando ps aux é possível visualizar essas informações conforme mostrado na figura abaixo.

processo2

O diretório /proc

 

O diretório /proc contém todos os processos que estão sendo executados no sistema organizados por pastas (cada pasta contém o pid de cada  processo em execução).

 

Executando um simples ls /proc é possível visualizá-los.

 

processol3

 

Visualizar processos

O Linux possui vários comandos no terminal para visualização de processos.

PS

O comando PS mostra informações sobre processos ativos no sistema.

A sintaxe básica do comando PS é ps [opções]

 

ps aux  – Mostra todos os processos ativos de todos os usuários.

ps alx – Mostra os processos ativos, não mostra o nome de usuário mas contém outros atributos da caracterísitca de um processo como o  PPID.

ps -eo user,pid,%mem,%cpu,command – Com esse comando podemos “falar” para o comando ps apenas exibir as características dos processos contendo os atributos usuário, consumo de memória e de processador e o comando executado.

ps -eo pid,stat|grep Z – O comando abaixo lista apenas o pid e o estado dos processos redirecionando a saída para o comando grep que listará apenas os processos com estado “morto”

 

TOP

Através do comando Top você consegue visualizar em tempo real os processos do linux em execução.

 

processol4

 

HTOP

O comando HTOP tem o mesmo propósito do top, visualizar os processos em tempo real mas de uma forma mais amigável, ele contém uma barra de rolagem para ser mais fácil a visualização de processos. Apenas aperte Page Dn ou Page Up ou as setas direcionais.

processol5

Planos de um processo

 

Os processos são executados em  2 planos distintos:

 

Primeiro Plano ou Foreground: Processos que bloqueiam o terminal quando está sendo executado.

 

 

Execute o comando fg número do job.

 

 

Segundo Plano ou Background: Processos que não bloqueiam o teminal.

 

Para colocar o processo em background execute o comando bg número do job.

 

Obs.: Para executar os comandos  informados acima é necessário que o processo seja parado CTRl+Z e depois ser excutado o comando bg+número do job ou fg +número do job. Você pode conseguir o número do job através do comando jobs.

 

Podemos exemplificar executando no terminal o thunderbird após aberto pressione as teclas CTRL+Z e execute o comando jobs e será listado o thunderbird.

 

processol6

 

processol7

Após parar o processo do thunderbird execute  o comando bg 1, o processo será  colocado em background.

 

Prioridades de processos

 

Os processos no linux possuem suas prioridades na execução e as mesmas são definidas pelos comandos nice e renice. O comando nice tem por objetivo iniciar um processo com uma determinada prioridade, já o comando renice  define a prioridade de um processo que esteja em execução.

 

Os valores de prioridades variam de +19 a -20, quanto menor for o valor maior prioridade o processo terá.

 

 

A figura a seguir mostra o campo NI(relacionado a prioridade do processo) após executarmos o comando ps alx.

 

processol8

 

O uso e entendimento dos comandos nice e renice são facéis apenas execute:

 nice aplicativo ou nome do binário + numero da prioridade.

renice nome do processo ou aplicativo + numero da prioridade.

 

nice  thunderbird 10

renice thunderbird 5

  

Finalização de Processos 

Um sinal é a forma de como os processos podem se “comunicar”. Através dos sinais é possível “dizer” ao processo para ser parado, finalizado “gentilmente”, retomado a sua execução ou finalizado de forma forçada dentre outros sinais. No linux  uma das ferramentas utilizadas para realizar o procedimento de envio de sinais é o comando Kill.

 

Os processos possuem diversos sinais que podem ser visualizados através do comando Kill -l.

processol9

Na tabela abaixo segue informações sobre alguns dos sinais mais utilizados.

 

Sinal Código em Linux Ação Descrição
SIGKILL 9 Terminar o processo Matar
SIGSTOP 19 Parar o processo  processo filho parado ou terminado
SIGCONT 18 Continuar a execução do processo, o shell envia o sinal quando executamos os comandos bg ou fg
SIGTERM 15 Terminar o processo Sinal de término, quando é solicitado gentilmente o término do processo.

Fonte: Wikipedia

A sintaxe básica do comando kill é a seguinte:

 Kill [sinal] número do pid.

Kill -9 121 – Esse comando irá finalizar o processo de forma forçada (Matar).

Kill -19 2556 – O sinal 19 irá parar o processo.

Kill -18 2556  – O sinal 18 irá retomar a execução do processo.

 

KILLALL

O comando killall tem o mesmo propósito que o Kill enviar sinais aos processos, mas ele trabalha de uma forma diferente. Ao executar o comando killall -l é exibido a tabela de sinais conforme figura abaixo.

 

processol10

O comando killall possui a seguinte sintaxe killall nome do processo. Ao se executar o comando será finalizado o processo.

killall firefox

Para especificar qual sinal será enviado utilize a opção -s.

killall -s -KILL firefox

killall -s -STOP firefox

Referências Bibliográficas

Adilson Rodrigues Bonan. Linux Fundamentos, Prática e Certificação LPI. Rio de Janeiro:Alta Books 2010.

Nemeth Evil,Snyder Garth, Trent R Hein.Manual Guia do Administrador Linux.São Paulo Pearson: Prentice Hall 2007

Quer continuar por dentro das novidades do Blog Seja Livre? Siga o nosso perfil no TWITTER, curta a nossa página no FACEBOOK ou adicione o Blog Seja Livre nos seus círculos do GOOGLE+.