Em uma tarefa diária de um administrador, sempre foram necessários conhecimentos sobre os processos no
Linux. Este tutorial é bem direto ao ponto, sobre o que um administrador Linux precisa saber!
O Linux é um programa monotarefa, mas com time shared (tempo de execução compartilhado). Processos são programas em execução, processo zumbi é quando o processo pai morre.
Todo processo, possui:
- Espaço de endereçamento de memória;
- Variáveis de ambiente;
- Lista de arquivos abertos;
- Um número que o identifica, conhecido como PID;
- Um processo pai (parent) identificado pelo PPID;
- Identificação de usuário e grupo.
Um processo tem uma ou mais linhas de execução (threads). Existem processos com maior e menor prioridade. Na hierarquia de processos, dizemos que o processo que chama o outro é o processo pai, enquanto o novo, é o processo filho.
A única forma de criar um processo novo no Linux, é através da chamada de sistema fork().
Rodar um programa na verdade é um fork seguido de uma chamada de sistema
execl.
Toda vez que se cria um processo, na verdade, o sistema está fazendo um fork, que nada mais é do que uma interface programática para acessar os recursos e/ou serviços no kernel do sistema operacional
Processos - criação
Os programas, usualmente, são de 2 tipos:
Binários :: Instruções em linguagem de máquina. Ex.: ELF.
Scripts :: Arquivos de comando (1º linha do tipo
!/bin/bash, ou
!/usr/bin/pearl).
Comandos:
# ps # Visualiza os processos em execução
# ps -a
# Exibe processos de outros usuários também
# ps -u # Exibe os processos detalhadamente inclusive com uso de memória
# ps -x # Exibe os processos que não estão vinculados a terminais
# ps -ef # Exibe todos os processos e mostra o PPID
# top # Exibe os processos que utilizam CPU em tempo real
# top -d # Exibe os processos que utilizam CPU em tempo real com atualização de 1 seg
# kill -9 (processo) # Mata um processo
# kill -l # Mostra as opções do comando kill
CRTL-Z # Coloca um processo em segundo plano
# fg (nº) # Coloca um processo em primeiro plano
# jobs # Lista processos que estão em segundo plano
Para executar diretamente em segundo plano, utilizar
& no final.
Processos - prioridade
Dependendo da importância dos processos, pode-se criar processos com maior e menor prioridade.
Além disso, é possível alterar a prioridade de um processo, mesmo depois dele já ter sido criado e estar sendo executado:
# nice -n (-20 a +19) programa # Roda o programa com a prioridade desejada
# renice (-20 a +19) processo # Permite alterar a prioridade do programa estando em execução
A prioridade vai de
-20 (maior) até
+19 (menor).
Quando iniciamos um programa com o comando
nice, sua prioridade é igual a
+10.
Se executamos o programa normalmente, sua prioridade será igual a zero.
Processos - memória
Para os processos, a memória é linear e começa do zero.
Na memória física, o processo pode estar em páginas não sequenciais, em qualquer lugar da memória. Se houver pouca memória para executar os processos, pode-se utilizar a memória SWAP.
Quando a memória física acaba, o sistema grava na SWAP as páginas de memória menos acessadas, abrindo espaço para novas páginas.
É isso por hoje, direto ao ponto e sem muitos segredos, esperamos que vocês aproveitem as dicas.
Abraços,
Equipe
Mundo Open