PROCESSOS
Um processo é um canal de comunicação entre os programas que estão sendo executados no
sistema operacional e o usuário, ou seja um processo é um programa que está sendo executado.
No Linux / Unix os processos utilizam os recursos de forma inteligente diminuindo o uso do
processador (CPU), ou seja quando processo de um programa tentar ler ou escrever informações no
HD, este processo entrará na fila de espera até finalizar a entrada e saída dados, enquanto isso
ocorre, outro processo pode ser executado diminuindo o tempo de uso e acesso do processador,
memória RAM e periféricos.
Cada processo que está sendo executado armazena um subdiretório com o mesmo número do
processo (PID) em /proc, e dentro desses subdiretórios é armazenado informações sobre cada
processo nos arquivos cmdline, environ e status.
Para exibir os processos são utilizados os comandos ps, pstree e top e para mudar a ordem de
prioridade dos processos são usados os comandos nice e renice.
Os processos tem prioridades alternando entre -20 (prioridade (maior) e 19 (prioridade menor), o
comando nice pode executar um programa com prioridade específicas sendo o seu padrão 10.
O comando renice modifica a prioridade de um processo em execução, sendo que somente o
usuário root pode executar processos com prioridade negativa e modificar a ordem de execução de
processos positivos para negativos.
COMPONENTES DE UM PROCESSO
A execução de um processo possui vários componentes.
PID e PPID
A execução de um processo possuem vários componentes PID e PPID O PID (Process
Identification - indentificador de processo) é um número de identificação que o sistema exibe a cada
processo. Nenhum PID pode existir para dois ou mais processos ao mesmo tempo, devendo ser
gerado um novo numero a cada um novo processo.
Quando isso ocorre, o processo "copiado" recebe o nome de "processo pai", enquanto que o novo é
denominado "processo filho". É justamente nesse momento que o PPID (Parent Process
Identification - indentificador de processo pai) passa a ser usado, sendo gerado em função do
processo pai, o PID.
UID e GID
Lembrando que cada processo necessita de um proprietário, ou seja, um usuário que seja
considerado seu dono. Nesse ponto, o sistema irá identificar, quem pode ou não executar o processo
em questão, isso de acordo com as permissões do usuário. Para lidar com os donos, o sistema utiliza
os números UID e GID.
No Linux os usuários e os grupos são gerenciados através dos números UID (User Identifier) e GID
(Group Identifier). Como podemos perceber, que UID são números de usuários e GID são números
de grupos. No processo podemos visualizar os usuários e grupos, facilitando a sua visualização e
somente o usuário root pode finalizar processos criados por outros usuários
CLASSIFICAÇÃO DOS PROCESSOS
Abaixo podemos distinguir a classificação dos processos utilizados no sistema Linux / Unix.
Foreground (primeiro plano)
Os comandos quando executados em primeiro plano no terminal de comandos, passam a interagir
junto com o usuário, exibindo a sua execução na tela do computador. Esses processos ficam fixos
no prompt, impedindo que outros processos sejam inicializados no terminal.
Background (segundo plano)
Os processos executados em background podem ser inicializados no terminal de shell, não há
interação com o usuário e nenhuma execução visível na tela do computador. Esses processos não
seguram o prompt de comandos, permitido assim que outros processos sejam inicializados no
terminal.
TIPOS DE PROCESSOS
Processos dinâmicos
A partir de uma sessão de usuário, os processos dinâmicos são executados inicialmente em um
terminal de comandos e gerenciado por ele. Quando se executa um comando no terminal,
geralmente ele é processado em modo foreground (primeiro plano).
Para interromper um processo utiliza-se as teclas <CTRL> + <Z>, onde automaticamente será
exibido a mensagem "Stopeed" e o número do job entre colchetes [ ] desse processo, e para
cancelar um processo utiliza-se as teclas <CTRL> + <C>. Para controlar o gerenciamento de
processos são utilizados os comandos fg, bg e jobs.
Exemplo:
$ xeyes
<CTRL> + <Z>
[1]+
Stopped
xeyes
$ xeyes
<CTRL> + <C>
GERENCIAMENTO DE TAREFAS (JOBS)
É a maneira pelo o qual os processos são finalizados e retornados ao seu estado inicial, os processos
são executados no terminal de comandos através de comandos de shell pelo usuário, podendo um
job armazenar um ou mais processos que podem ser visualizados pelo comando jobs.
No exemplo abaixo é executado o programa xeyes em backgroung &.
$ xeyes &
[1] 3480
$ jobs -l
[1]+ 3480 Running
xeyes &
Acima é exibido o número do job [1] e o PID do processo 3480.
COMANDOS DE GERENCIAMENTO DE PROCESSOS
CTRL + C (finaliza um processo)
CTRL + Z (interrompe um processo)
& - Executa um comando(processo) em background (segundo plano)
Exemplo:
$ firefox &
bg - Põe um comando(processo) em background (segundo plano)
%id Número do job colocado em segundo plano.
Exemplo:
$ xeyes
CTRL + Z
[1] + Stopped
xeyes
$ bg %1
[1]+ xeyes &
fg - Coloca um processo em primeiro plano (background)
%id - Número do job colocado em primeiro plano.
Exemplo:
$ top &
[1] 3004
$ fg %1
CTRL + C
jobs - Exibe os jobs em execução
Opção
Significado
-l
Exibe o nome e o numero de cada processo
-s
Exibe o nome de cada processo
-p
Exibe o numero de cada processo
Exemplo:
$
$
$
$
firefox &
jobs
jobs -l
jobs -p
ps - Mostra informações sobre processos em execução
Opção
Significado
-A
Mostra todos os processos
-a
Mostra informações de outros usuários
-u
Mostra o nome do usuário e o horário de início do processo
-x
Mostra processos do terminal corrente e de outros terminais
-p
Mostra o número do processo PID
Exemplo:
$ firefox &
$ ps -aux
$ ps -aux | grep firefox
Abaixo seguem as opções exibidas na saída dos comandos:
Opção
USER
PID
Significado
Nome do usuário dono do processo
ID do processo
%CPU
%MEM
VSZ
RSS
TTY
Porcentagem do consumo de CPU
Porcentagem do consumo de memória
Tamanho virtual do processo
Número de páginas na memória(Resident Set Size)
TTY do terminal
STAT
Estado processo:
R (executável), S (Dormente (< 20 segundos)), Z
(Zumbi), D (espera no disco(curto prazo)), T (rastreado
ou interrompido)
Outras opções adicionais:
W (processo paginado em disco), < (prioridade do
processo maior que o normal), N (prioridade do
processo menor que o normal), L (páginas bloqueadas
no kernel do sistema)
START
TIME
COMMAND
Horário de início do processo
Tempo de consumo do processador (CPU) consumido pelo processo
Nome do comando e opções
pstree - Mostra informações sobre processos em execução em forma de árvore
Opção
-a
-c
-l
-n
-p
Significado
Mostra opções de comandos no terminal .
Não compacta subárvores.
Mostra linhas de forma detalhada
Classifica os processos pelo PID
Exibe o PID dos processos.
Exemplo:
$ pstree -p
$ pstree -nap
pidof - Exibe o PID do processo informado
Opção
-s
-x
Significado
Exibe apenas o PID
Exibe o PID do script que está sendo executado
Exemplo:
$ top &
$ pidof top
top - Visualiza os processos com o maior uso do processador (CPU)
Opção
-u
-U
-d (n)
Significado
Mostra processos de um usuário específico
Não mostra processos de um usuário específico
Atualiza a tela do monitor a cada n segundos
Exemplo:
$ top
$ top -u aluno1
$ top -u aluno1 -d 3 (atualiza os processos do usuário aluno1 a cada 3 segundos)
free - Visualiza a quantidade de memória livre e usada pelo sistema
Opção
Significado
-b
-k
-m
-g
-o
-s (n)
Mostra informações em bytes (Bytes)
Mostra informações em kbytes (KB)
Mostra informações em megabytes (MB)
Mostra informações em gigabytes (GB)
Mostra os dados de memória sem exibir a memória utilizada como buffer
Mostra os dados de memória a cada n segundos
Exemplo:
$ free - -help
$ free
$ free -m
$ free -s 3 (atualiza os processos do usuário aluno1 a cada 3 segundos)
vmstat - Exibe estatística de utilização da memória swap
Opção
-n
-V
Significado
Mostra as informações de uma só vez
Exibe a versão do comando
Exemplo:
$ vmstat - -help
$ vmstat
$ vmstat -n
$ vmstat 1 3 (atualiza o comando a cada 1 segundo 3 vezes)
kill - Finaliza um processo pelo PID
Opção
-V
-l
Significado
Exibe a versão
Lista todos os nomes e números de sinais .
O sinal padrão para o kill é TERM(encerramento por hardware), usando a opção -l no comando kill
são exibidos todos os sinais, como HUP (suspender), INT (interromper), KILL (destruir), STOP
(parar), QUIT (sair) e etc. Para mais detalhes sobre os sinais use o comando man kill.
Para matar um processo são utilizadas 3 maneiras usando os sinais negativos:
-9, -SIGKILL e -KILL.
Exemplo:
$ kill -l
$ kill -l KILL
9
$ top &
[1] 3357
$ kill -9 3357
ou
$ kill -KILL 3357
ou
$ kill -SIGKILL 3357
killall - Finaliza processos pelo nome
Opção
Significado
-V
Exibe a versão
-l
Lista todos os nomes e números de sinais.
Exemplo:
$ kill -l
$ xeyes &
[1] 3409
$ killall xeyes
[1]+ Terminado
$ top &
[1] 3357
$ killall -9 top
ou
$ killall -KILL top
ou
$ killall -SIGKILL top
nohup - Continua executando um comando mesmo que o usuário saia do sistema
Exemplo:
$ nohup
find /usr | grep adduser &
nice - Executa um processo com prioridade de execução
Opção
Significado
--help
--version
Mostra uma mensagem de ajuda
Mostra a versão do comando
(prioridade)
Valor da prioridade do processo, sendo que quanto maior o valor, menor será
a prioridade de escalonamento do processo, variando entre os valores -20 a
+19, sendo -10 o valor padrão de prioridade.
Exemplo:
$ nice -1 firefox
renice - Modifica a prioridade de um processo em execução
opção
Significado
(prioridade)
Valor que deve ser atribuído à prioridade do processo
-p (número)
-u (usuário)
-g (grupo)
Processo
Nome do usuário
Grupo do usuário
Exemplo:
$ firefox &
[2] 3429
$ renice +19 3429 (modifica a prioridade do processo 3429 para +19)
3429: prioridade antiga = 0; prioridade nova = 19
$ renice -1 -p 3429 (modifica a prioridade do processo 3429 para -1)
3429: prioridade antiga = 19; prioridade nova = -1
# renice -20 -u aluno1 (modifica a prioridade para -20 de todos os processos do usuário aluno1)
3429: prioridade antiga = -1; prioridade nova = -20
Download

PROCESSOS