Desde que comecei a utilizar o Linux como meu sistema, sempre tive dificuldades com o controle de processos. Não sei se por preguiça, não sei se minha memória falha, mas só sei que nunca gravei o comando ps aux que é justamente o comando que lista os processos. E mesmo agora, ESCREVENDO isto, não tenho certeza de que amanhã ou depois simplesmente vou precisar matar um processo qualquer e vou esquecer o danado do comando.
Entretanto, navegando por aí, encontrei um post muito bom sobre o gerenciamento de processos no Linux, e claro vou compartilhá-lo aqui.
PROCESSOS NO LINUX
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.
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.
O comando ps alx mostra a identificação dos processos filhos (PID) e o processo pai (PPID).
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.
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.
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.
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.
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.
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.
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.
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 executado 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.
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 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.
A figura a seguir mostra o campo NI(relacionado a prioridade do processo) após executarmos o comando ps alx.
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
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.
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.
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. |
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.
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.
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
Nenhum comentário:
Postar um comentário