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
Administração de sistemas operacionais
Aula 12Administraçã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 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.
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 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
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.
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
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 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
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 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
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.
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
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.