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
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
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
Maxwell Anderson 5
ps Exibe um instantâneo dos processos atuais Opções de linha de comando -A Seleciona todos os processos -r Restringe a seleção para exibir somente os processos que estão em execução -p PID 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
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
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
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
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
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
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
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
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
time executa um comando e resume a utilização dos recursos do sistema. Exemplo: $ time gedit real user sys 0m5.853s 0m0.776s 0m0.272s real user sys 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
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
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 Exibe os totais da memória RAM e SWAP $ free m Exibe os valores de saída em MB $ free k Exibe os valores de saída em KB $ free mt 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