Administração de sistemas
operacionais
Aula 12
Administração de processos.
Prof. Esp. Diovani Milhorim
Administração de processos

Programas e processos
Programas são arquivos em disco contendo instruções para
execução pelo processador, enquanto processos são as
execuções em andamento.
Cada processo executando no sistema em um determinado
momento é identificado por um número único, o PID Process IDentifier. Além disso, cada processo possui outras
informações que o caracterizam, como:





Usuário proprietário (aquele que lançou o processo)
Sessão de shell de onde foi lançado (se foi lançado através de
um shell)
Estado atual (Running, Suspended, SWapped, ...)
Linha de comando usada para lançá-lo.
Uso de memória e CPU
Administração de processos

Comandos ps e pstree
Podemos visualizar os processos em execução no sistema
através do comando ps, cuja execução sem parâmetros gera
uma listagem como a seguinte:
# ps
PID TTY
TIME CMD
22791 pts/0 00:00:00 bash
22836 pts/0 00:00:00 ps

Observamos os seguinte campos nesta listagem




PID: identificação do processo
TTY: terminal do usuário que requisitou o processo
TIME: tempo de execução total do processo
CMD: Comando que iniciou o processo.
Administração de processos

Comandos ps e pstree
O comando ps aceita uma série de parâmetros,
entre os quais os mais importantes são:




a : mostra processos de outros usuários também
(all).
u : mostra listagem mais detalhada dos processos,
com uso de memória e CPU
x : mostra processos não conectados a terminais.
w: mostra mais detalhes sobre as linhas de
comando dos processos.
Administração de processos

Comandos ps e pstree
Para obter uma listagem completa dos
processos em execução no sistema usa-se
as opções auxw, que geram uma listagem
como a que segue:
# ps auxw
USER PID %CPU %MEM SIZE RSS TTY STAT START TIME COMMAND
root
975 0.0 0.0 1424 568 ?
S
Apr28 0:06 crond
xfs
1051 0.0 0.1 5356 4076 ?
S Apr28 0:00 [xfs]
ntop
1072 0.0 0.5 88936 11296 ?
S Apr28 0:00 [ntop]
root
1092 0.0 0.0 1608 576 ?
S Apr28 0:00 rhnsd --interval 240
root
1099 0.0 0.0 1344 396 tty2
S Apr28 0:00 /sbin/mingetty tty2
root
1100 0.0 0.0 1344 396 tty3
S Apr28 0:00 /sbin/mingetty tty3
root
1101 0.0 0.0 1344 396 tty4
S Apr28 0:00 /sbin/mingetty tty4
root
1102 0.0 0.0 1344 396 tty5
S Apr28 0:00 /sbin/mingetty tty5
root
1103 0.0 0.0 1344 396 tty6
S Apr28 0:00 /sbin/mingetty tty6
Administração de processos
Os principais campos dessa listagem são:
USER
PID
%CPU
%MEM
processo.
SIZE
RSS
TTY
STAT
START
TIME
COMMAND
: o proprietário do processo
: número do processo.
: porcentagem da CPU usada pelo processo.
: porcentagem da memória usada pelo
: memória total usada pelo processo.
: memória física (RAM) usada pelo processo.
: terminal ao qual o processo está ligado.
: status do processo (rodando, suspenso, ...).
: data de lançamento do processo.
: tempo total de CPU usado pelo processo.
: comando usado para lançar o processo.
Administração de processos
Estados de processo.
À medida que vai sendo executado, um processo
passa por vários estados.
ready: pronto para executar.
running. Em execução na CPU
waiting: Aguardando operação de I/O.
stopped: Suspenso por um outro processo.
zombie: Processos que terminam sem que o seu
pai (parent) seja informado.
Dead: processo terminado
Administração de processos
Figura 01: Estados de processos
Administração de processos

Comando pstree
O comando pstree é útil por mostrar a hierarquia existente
entre os processos ativos no sistema:
Administração de processos

prioridade processos – Comandos nice e renice
O comando nice configura a prioridade da execução
de um comando/programa.
nice [opções] [comando/programa]
Administração de processos

prioridade processos – Comandos nice e renice
O comando renice configura a prioridade de um
processo que já esteja em execução (somente o dono
do processo ou o superusuário podem mudar a
prioridade de um processo).
renice [opções] [processos ou usuários]
Se um programa for executado com maior prioridade,
ele usará mais recursos do sistema para seu
processamento, caso tenha uma prioridade baixa, ele
permitirá que outros programas tenham preferência. A
prioridade de execução de um programa/comando ou
processo pode ser ajustada de -19 (a mais alta) até 19
(a mais baixa).
Administração de processos

prioridade processos – Comandos nice e
renice
Exemplos de utilização:
# nice -n -19 find / -name apropos
# ps –l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY
TIME CMD
000 S 1094 22791 22790 0 75 0 - 583 wait4 pts/0 00:00:00 bash
000 R 1094 23275 22791 0 76 0 - 775 pts/0 00:00:00 ps
#renice 19 -p 22790
22790: prioridade antiga = 0; prioridade nova = 19
Administração de processos

Execução de Comandos
em Background e Foreground

Caractere &
É possível que se queira executar um
comando demorado e, enquanto se
espera o resultado do mesmo, fazer-se
outras coisas no terminal. Este processo
de se rodar um programa ou comando
desvinculado do terminal chama-se rodar
em background.

Administração de processos

Execução de Comandos
em Background e Foreground
Se for colocado o caractere & na linha de comando, a
mesma será executada em background, liberando
assim o terminal para outras tarefas. Se por acaso as
saídas padrão e de erro do comando submetido
em background não forem redirecionadas elas
continuaram saindo na tela apesar da execução do
comando não estar mais vinculada a ele. Portanto
sempre que for usar comandos em background,
redirecione tanto a saída padrão, como a saída de erro.
Deve ser colocado com sendo o último caractere da
linha de comando;
# ls –la –R / > teste.txt 2>&1 &
[1] 22925
Administração de processos

Execução de Comandos em Background e Foreground
Comando jobs
O comando interno jobs mostra a situação de todos os processos que
estão em background e que foram submetidos debaixo da sessão
corrente. Um processo pode estar em situação suspensa ou rodando.
Os processos estão numerados conforme o número indicado na
submissão em background. Estas informações estão armazenadas em
uma tabela interna do processo shell e é perdida quando se termina a
sessão e o processo.
# ls –la –R / > teste.txt 2>&1 &
[1] 22925
# jobs
[1]+ Running
ls --color=tty -la -R / >teste.txt 2>&1 &
Administração de processos

Execução de Comandos em Background e Foreground
Comando bg
Para ativar um processo parado podemos usar os comandos
internos bg , bastando fornecer o número do processo indicado pelo
comando jobs ou alguma string de caracteres que identifique o
processo.
Com o comando interno bg esta se indicando que o processo deve
voltar a executar em background.
# jobs
[1]+ Stopped
ls --color=tty -la -R / >teste.txt 2>&1
# bg %1
[1]+ ls --color=tty -la -R / >teste.txt 2>&1 &
# jobs
[1]+ Running
ls --color=tty -la -R / >teste.txt 2>&1 &
Administração de processos
Comando nohup
Todos os processos que o usuário roda está ligado ao seu
processo shell de sessão. O Unix/Linux possui a característica
de que se o processo principal termina, todos os seus filhos
serão encerrados. Isto torna-se um problema quando temos
que rodar um comando ou programa demorado e não
podemos manter a sessão aberta.
O comando nohup serve para desligar um processo do
processo shell da sessão permitindo assim que se encerre a
sessão sem prejuízo da execução do programa ou comando.
Deve-se sempre colocar o comando para rodar
em background pois o nohup não faz isto automaticamente.
# nohup ls –la /etc > teste.txt 2>&1 &
[1] 23013
Administração de processos
Comando kill
Quando se quer matar um processo, seja em background seja
em foreground (de outro terminal) devemos usar o comando kill.
Deve-se fornecer para este comando o número do PID do processo
que se quer eliminar. Somente o proprietário do processo e o usuário
root podem enviar sinais.
Opcionalmente podemos estabelecer o tipo de sinal a ser mandado
para o processo. Para isto basta se colocar o número ou mnemônico
do mesmo. Caso não se coloque nenhum sinal, será enviado o sinal
15(TERM) para o processo.
Os sinais mais importantes são:
15 (TERM): Interrupção amena do processo. Este sinal pode ser
interceptado e ignorado pelo process;
9 (KILL): Interrupção forçada do processo. Este sinal não pode ser
interceptado e nem ignorado pelo processo;
24 (STOP): Suspende a execução de um processo. Este sinal também não
pode ser interceptado e ignorado;
26 (CONT): Ativa a execução de um processo suspenso.

Administração de processos
Exemplos utilizando o script tempo.sh abaixo.
tempo.sh
#/bin/bash
trap "echo Não vou terminar!!!" 15 //intercepta sinal 15
while true
do
sleep 1
done
#bash tempo.sh &
[1] 23064
#kill -15 23064
Não vou terminar!!!
#kill -9 23064
[1]+ Killed
bash tempo.sh
Administração de processos

1.
2.
3.
Exercícios
Verifique quais os processos em atividade no
sistema atualmente, identificando o uso de
memória e CPU de cada um (dica: use o
comando ps auxw | less). Identifique o
significado de cada uma das colunas da listagem
obtida (ver a página de manual). Quais os
processos que mais consomem recursos do
sistema ?
Implemente o exemplo dado nesta aula no
comando kill utilizando o shell script tempo.sh.
Envie a resposta do primeiro item e o print
screen do resultado do segundo item para o email do professor.
Download

Aula 12 - professordiovani.com.br