Administração de sistemas operacionais

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

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

Transcript of Administração de sistemas operacionais

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.