20
Administração de sistemas operacionais Aula 12 Administração de processos. Prof. Esp. Diovani Milhorim

Administração de sistemas operacionais

  • Upload
    oma

  • View
    24

  • Download
    0

Embed Size (px)

DESCRIPTION

Administração de sistemas operacionais. Aula 12 Administração de processos. Prof. Esp. Diovani Milhorim. Administração de processos. Programas e processos - PowerPoint PPT Presentation

Citation preview

Page 1: Administração de sistemas operacionais

Administração de sistemas operacionais

Aula 12Administração de processos.Prof. Esp. Diovani Milhorim

Page 2: Administração de sistemas operacionais

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 

Page 3: Administração de sistemas operacionais

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 CMD22791 pts/0    00:00:00 bash22836 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.

Page 4: Administração de sistemas operacionais

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.

Page 5: Administração de sistemas operacionais

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 COMMANDroot       975  0.0  0.0  1424  568 ?         S    Apr28   0:06 crondxfs       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

240root      1099  0.0  0.0  1344  396 tty2   S    Apr28   0:00 /sbin/mingetty tty2root      1100  0.0  0.0  1344  396 tty3   S    Apr28   0:00 /sbin/mingetty tty3root      1101  0.0  0.0  1344  396 tty4   S    Apr28   0:00 /sbin/mingetty tty4root      1102  0.0  0.0  1344  396 tty5   S    Apr28   0:00 /sbin/mingetty tty5root      1103  0.0  0.0  1344  396 tty6   S    Apr28   0:00 /sbin/mingetty tty6

Page 6: Administração de sistemas operacionais

Administração de processos

Os principais campos dessa listagem são: 

USER                  : o proprietário do processoPID                       : número do processo.%CPU                 : porcentagem da CPU usada pelo processo.%MEM                 : porcentagem da memória usada pelo

processo.SIZE                     : memória total usada pelo processo.RSS                     : memória física (RAM) usada pelo processo.TTY                       : terminal ao qual o processo está ligado.STAT                   : status do processo (rodando, suspenso, ...).START                 : data de lançamento do processo.TIME                    : tempo total de CPU usado pelo processo.COMMAND        : comando usado para lançar o processo.

Page 7: Administração de sistemas operacionais

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 CPUwaiting: 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

Page 8: Administração de sistemas operacionais

Administração de processos

Figura 01: Estados de processos

Page 9: Administração de sistemas operacionais

Administração de processos Comando pstree

O comando pstree é útil por mostrar a hierarquia existente entre os processos ativos no sistema:

Page 10: Administração de sistemas operacionais

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] 

Page 11: Administração de sistemas operacionais

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).

Page 12: Administração de sistemas operacionais

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 CMD000 S  1094 22791 22790  0  75   0    -   583 wait4  pts/0    00:00:00 bash000 R  1094 23275 22791  0  76   0    -   775 -       pts/0    00:00:00 ps

#renice 19 -p 2279022790: prioridade antiga = 0; prioridade nova = 19

Page 13: Administração de sistemas operacionais

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.

 

Page 14: Administração de sistemas operacionais

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

Page 15: Administração de sistemas operacionais

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 &

Page 16: Administração de sistemas operacionais

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 &

Page 17: Administração de sistemas operacionais

Administração de processosComando 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

Page 18: Administração de sistemas operacionais

Administração de processosComando 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.

Page 19: Administração de sistemas operacionais

Administração de processosExemplos utilizando o script tempo.sh abaixo.tempo.sh#/bin/bashtrap "echo Não vou terminar!!!" 15 //intercepta sinal 15while true

dosleep 1

done

#bash tempo.sh &[1] 23064

#kill -15 23064Não vou terminar!!!

#kill -9 23064[1]+  Killed                  bash tempo.sh

Page 20: Administração de sistemas operacionais

Administração de processos Exercícios1. 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 ?

2. Implemente o exemplo dado nesta aula no comando kill utilizando o shell script tempo.sh.

3. Envie a resposta do primeiro item e o print screen do resultado do segundo item para o e-mail do professor.