Laboratório de Sistemas Operacionais Módulo 1 Gerência de Memória e de Processos Prof. Maxwell Anderson www.maxwellanderson.com.br Agenda • Comandos para gerenciamento de processos: – top, htop, ps, kill, killall, renice, bg, fg, time, nohup, strace • Comandos para gerenciamento de memória: – free, memstat, pmap Maxwell Anderson 2 Gerenciamento de Processos top – Exibe os processos em execução na CPU Fornece uma visão atualizada das tarefas do processador em tempo real. Ele exibe uma lista das tarefas mais intensivas no sistema, e pode fornecer uma interface interativa para a manipulação de processos. Maxwell Anderson 3 Gerenciamento de Processos htop – Exibe os processos em execução na CPU de maneira iterativa É similar ao top, mas permite navegar pela lista verticalmente e horizontamente, permitindo a visualização de todos os processos. Taredas relacionadas a processos (killing) pode ser realizado em entrar com seus PIDs. Maxwell Anderson 4 Gerenciamento de Processos 5 Maxwell Anderson Gerenciamento de Processos ps – Exibe um instantâneo dos processos atuais Opções de linha de comando -A -r -p PID Seleciona todos os processos Restringe a seleção para exibir somente os processos que estão em execução Seleciona o processo pelo PID Exemplo: ps -p 3425 -U user Seleciona o processo pelo usuário que originou a chamada. Exemplo: ps -U root -C processo Seleciona o processo pelo nome Exemplo: ps -C gedit Maxwell Anderson 6 Gerenciamento de Processos kill – Envia um sinal para o processo O sinal padrão é TERM. Este sinal finaliza (mata) o processo. Exemplos: kill 2534 mata o processo com o PID 2534 Maxwell Anderson 7 Gerenciamento de Processos killall – Envia um sinal para o processo. Parecido com kill mas recebe como parâmetro o nome do processo ao invés do seu PID O sinal padrão é TERM. Este sinal finaliza (mata) o processo. Exemplos: killall gedit mata os processos com o nome gedit (editor de textos) do gnome. Maxwell Anderson 8 Gerenciamento de Processos renice – Altera as prioridades dos processos (entre -20 a 20) Exemplos: renice 19 –p 2534 altera a prioridade do processo cujo PID é 2534 para 22 renice 15 –u root altera as prioridades dos processos do usuário root para 15 Usuários comuns poderão somente alterar prioridades de seus processos em um intervalo de 0 a 20 Maxwell Anderson 9 Gerenciamento de Processos bg - O comando bg permite que um programa rodando em primeiro plano ou parado, rode em segundo plano (background), liberando o shell para outras atividades. Existem 3 maneiras diferentes de colocar um programa em background, veja os exemplos: Inicie o vi e depois pressione as teclas Ctrl+Z, o vi é interrompido e colocado em segundo plano. # vi [1]+ Stopped vi Maxwell Anderson 10 Gerenciamento de Processos Agora faça o seguinte: # top & [2] 1130 O caracter "&" colocou o top para ser executado em segundo plano, vamos ao último exemplo: Vamos executar a man page do comando du: # man du Agora interrompa a sua execução pressionando as teclas Ctrl+Z: # man du [3]+ Stopped man du Maxwell Anderson 11 Gerenciamento de Processos Agora use o comando bg da seguinte maneira: # bg 3 bg 3 [3]+ man du & Mas por que colocar os processos em segundo plano? Imagine que você esteja consultando uma man page de um determinado comando e deseja utilizar uma de suas opções, muitos sairiam da man page ou abririam outro terminal, felizmente não precisamos fazer isso, usando as opções para colocar as tarefas em segundo plano faremos tudo no mesmo terminal. Ou seja, o Linux lhe oferece a oportunidade de executar outros processos sem que você tenha de parar o que estava fazendo. Maxwell Anderson 12 Gerenciamento de Processos jobs - O comando jobs mostra os processos que estão parados ou rodando em segundo plano. Vamos listar os processos que estão em segundo plano: # jobs -l [1] 1129 Parado vi [2]- 1130 Parado (saída tty) top [3]+ 1192 Parado (saída tty) man du Observe a saída do comando, foram listados os números dos processos, os PIDs e o estados dos processos. Maxwell Anderson 13 Gerenciamento de Processos fg - O comando fg permite que um programa rodando ou parado em segundo plano rode em primeiro plano. Podemos colocar os programas que estão sendo executados em segundo plano para rodar em primeiro usando o nome do programa que queremos rodar ou o número da tarefa que ele representa no comando jobs. Neste exemplo vamos startar o vi, o seu número de tarefa é 1, veja os exemplos: # fg vi ou # fg 1 Observe que o vi agora está rodando em primeiro plano ou em foreground, podemos fazer isso com todos os outros processos que estão em segundo plano ou background Maxwell Anderson 14 Gerenciamento de Processos time – executa um comando e resume a utilização dos recursos do sistema. Exemplo: $ time gedit real user sys real user sys 0m5.853s 0m0.776s 0m0.272s Elapsed real time utilizado pelo processo Quantidade total de segundos que o processo utilizou durante o uso da CPU (no modo usuário) Quantidade total de segundos que o processo utilizou durante o uso da CPU (no modo kernel) Maxwell Anderson 15 Gerenciamento de Processos nohup – Executa COMANDO, ignorando sinais de hangup. Exemplo: $ nohup ls –la nohup: ignorando entrada e adicionando a saída em `nohup.out‘ Este comando é interessante quando executado em um terminal remoto. Caso deseje executar um comando em background e forçar sua execução mesmo que o usuário se desconecte do terminal, o comando ainda continuará sendo executado no servidor. Exemplo: $ nohup comando_que_vai_demorar & Maxwell Anderson 16 Gerenciamento de Processos strace – realiza o monitoramento de chamadas de sistema (system calls) e sinais. Muitas vezes acontece de não sabermos qual problema pode estar dando em uma certa aplicação. Então podemos usar um comando que irá monitorar o comando Exemplo: $ strace ls –la $ strace firefox %u Maxwell Anderson 17 Gerenciamento de Memória free – exibe a quantidade de memória livre e utilizada pelo sistema Exemplo: $ free Outras opções: $ free –t $ free –m $ free –k $ free –mt Exibe os totais da memória RAM e SWAP Exibe os valores de saída em MB Exibe os valores de saída em KB Exibe os valores de saída mais os totais em MB Maxwell Anderson 18 Gerenciamento de Memória memstat – identifica quem está utilizando a memória virtual Exemplo: $ memstat Maxwell Anderson 19 Gerenciamento de Memória pmap – exibe um relatório do mapa de memória de um processo Sintaxe: $ pmap PID Exemplo: $ pmap 12690 Maxwell Anderson 20 Outros comandos • cat arquivo mostra o conteúdo de um arquivo. Por exemplo, para ver o arquivo infowester.txt, basta digitar cat infowester.txt • du diretório mostra o tamanho de um diretório. • tar -xzvf arquivo.tar.gz extrai um arquivo compactado em tar.gz. • uname mostra informações do sistema operacional e do computador. Digite uname -a para obter mais detalhes; Maxwell Anderson 21 Outros comandos • uptime mostra a quantas horas seu computador está ligado; • who mostra quem está usando o sistema. • cal exibe um calendário; • halt desliga o computador; Maxwell Anderson 22 Referências Comandos bg, jobs e fg. Disponível em http://www.vivaolinux.com.br/artigo/Criando-monitorando-eterminando-processos?pagina=5 Manual do terminal Purcell, J. Linux Command Reference. EUA: Red Hat Software Inc. 1997 Maxwell Anderson 23