O principal papel do comando top é exibir os processos que estejam sendo executados em um sistema Linux. Ele fornece uma visão dinâmica destes processos, atualizando a lista a cada 3 segundos, por padrão. O que poucos usuários – e mesmo administradores – sabem é que os dados exibidos, sua ordem e aparência são configuráveis. E esta configuração pode persistir mesmo após uma reinicialização do sistema. Além disto, o top tem uma interface para manipulação de processos.
A página de manual (manpage) do comando top não é das mais claras. Este artigo propõem-se a esclarecer de forma didática as diversas opções de utilização do comando top em Linux.
Operação

Interface padrão do comando top
Ao iniciar o programa top, o usuário obtém sua tela tradicional. Ela é composta por área de resumo do sistema; linha de comandos e mensagens; cabeçalhos de colunas e área de processos. Ao ser executado, ele fica automaticamente aguardando a digitação de comandos na respectiva linha de comandos e mensagens. Os comandos mais importantes são o de ajuda (‘h’ ou ‘?’) e o de saída (‘q’); embora muitos usuários encerrem o top com uma combinaçao de <CTRL>+<C>.
O usuário pode utilizar o top de formas distintas do comum, como veremos a seguir, o que pode ser muito útil em diversas ocasiões. Para obter informações por conta própria, utilize o comando ‘h’. Pressione qualquer tecla para sair da tela de ajuda, exceto ‘h’ ou ‘?’, que forneceram mais dados.
Uma forma de ver a sintaxe possível do comando é digitar
top -h
Para saber qual versão do top você está utilizando, use o comando
top -v
A versão utilizada para os testes deste artigo foi a 3.2.7. Ao menos nesta versão, a saída dos comandos top -h e top -v é idêntica.
Convém avisar que o uso do hífen é opcional para indicar os parâmetros deste comando.
Conhecendo a área de resumo de sistema
A parte superior da tela do comando top traz cinco linhas com dados sobre o sistema.
A primeira linha traz o nome do programa, hora do sistema, tempo decorrido desde a inicialização do sistema, quantidade de usuários e carga do sistema. Essa linha pode ser ocultada ou reexibida com o comando ‘l’
A linha seguinte exibe a quantidade de tarefas do sistema, devidamente categorizadas. Use o comando ’1′ para visualizar dados separadamente para cada processador ou núcleo do sistema.
A linha de status de UCP traz a porcentagem de utilização do processador desde a última atualização dos dados em diversas situações, a saber: Processos em modo usuário sem nice (us), processos do kernel (sy), tempo ocioso (id), processos em modo usuário com nice (ni), espera por entrada/saída (wa), tratamento de interrupções de hardware (hi) e de interrupções de software (si) e tempo “roubado” de uma máquina virtual para outras tarefas, como a execução de outra máqunas virtuais (st). Esta linha pode ser ocultada ou reexibida com o comando ‘t’, que também afeta a linha anterior.
As duas últimas linhas trazem dados sobre o uso da memória fisica e de swap. Ambas linhas podem ser ocultadas ou reexibidas com o comando ‘m’.
Destacando dados
Você pode utilizar o comando ‘B’ para habilitar o recurso de negrito, utilizado para destacar valores, linhas ou colunas tanto da área de resumo, como da linha de comandos e da área de processos. Se o terminal não oferecer suporte ao uso de negrito, este comando não surtirá nenhum efeito. O uso deste comanmdo é particularmente útil em conjunto com os comandos ‘x’ e ‘y’. O comando ‘x’ destaca a coluna utilizada para ordenar os dados e o comando ‘y’ destaca a linha com o processo que está no estado de execuçao. O comando ‘b’ pode ser utilizado para trocar entre destaque por negrito ou por vídeo reverso.

Interface do top com destaque
Operando em modo seguro
Alguns comandos interativos devem ser utilizados com parcimônia. Uma forma de evitar o uso destes comandos é a utilização do top em modo seguro. Destarte, estes comandos não serão executados, evitando-se seu uso indiscriminado. Para executar o top em modo seguro ele deve ser iniciado com
top -s
Você pode automatizar esta forma criando um alias no .bashrc ou utilizando arquivos de configuração, como será visto em breve.
Limitando as interações
Pode ser do interesse do usuário verificar o comportamento dos processos por um determinado intervalo de tempo. O comando
top -n 5
irá exibir a lista de processos sendo atualizada cinco vezes. Considerando o tempo padrão de 3 segundos entre atualizações, isto representa a observação do comportamento dos processos em um intervalo total de 15 segundos.
Gravando em arquivo
Com o comando
top -b -n 3 > /tmp/teste.txt
o top será executado em lote (-b, de batch), passando por três atualizações. O resultado será gravado em um arquivo para posterior consulta e manipulação. Ao ser executado em lote, o top não aceitará entrada de comandos dos usuários. Alterações nesta forma de utilizá-lo podem fazer com que a saída de dados seja processado por outro comando antes de ser exibida ou enviada para algum arquivo. Por exemplo:
top -b -n 3 | grep Xorg
irá exibir apenas os dados para este processo em questão (o servidor gráfico Xorg).
Alterando o tempo de atualizaçao
O usuário pode querer analisar um cenário onde o intervalo de três segundos não seja adequado. Ele pode utilizar o comando
top -d 6.5
Para que o programa atualize a lista de processos a cada seis segundos e cinco décimos, por exemplo.
Caso você tenha definido um tempo de atualização muito longo e queira atualizar a tela em determinado momento, basta pressionar a barra de espaços ou o ENTER na linha de comandos.
Se sua vontade for alterar este parâmetro durante a execução do top, pressione ‘d’ ou ‘s’, na linha de comandos. Isto ativará um prompt para você digitar o tempo de atualização desejado. Tenha o cuidado de não digitar valores muito baixos e que dificultem a interpretação e o uso dos resultados. O uso destes comandos é desabilitado quando o top estiver sendo executado em modo seguro.
Se, a qualquer instante, você quiser saber qual é o tempo do intervalo de atualização corrente do top, pressione ‘h’ na linha de comando e veja este valor no cabeçalho da página de ajuda. O uso de qualquer tecla – exceto ‘h’ e ‘?’ – fará com que você volte para a interface do programa.
Acompanhando um usuário
Digamos que você queira examinar os processos de um usuário específico do sistema. Isso será possível com o comando
top -u abigail
Desta forma, seriam exibidos somente os processos pertencentes ao usuário cuja conta seja abigail. Contudo, neste caso, você pode perder algum processo que envolva esta conta de usuário mas que esteja sendo executada com sudo – o que altera o usuário efetivo do processo – ou mesmo um sistema de arquivos desta conta de usuário, mas manipulado por um processo de terceiros. Para garantir a exibição destes processos, o comando seria
top -U abigail
Quando for necessário avaliar os processos de um usuário com o top em execução, pressione ‘u’ ou ‘U’ na linha de comandos e informe o nome da conta de usuário ou seu UID. Para retornar a ver os processos de todos os usuários, use novamente os comandos ‘u’ ou ‘U’ e digite ENTER, ao invés de preencher os dados de uma conta específica.
Alterando o conjunto de dados
Por padrão, a área de tarefas exibe, para cada processo: o número do processo, o usuário efetivo dono do processo, prioridade e valor de nice, total de memória virtual, residente e compartilhada em uso, status, porcentagem de uso de tempo de processador, porcentagem de memória disponível em uso, tempo de processador já utilizado (com precisão de centésimos de segundos) e nome do programa envolvido. Contudo, muitas outras opções podem ser exibidas, como identificação do “processo-pai”, terminal de controle, controle de page faults e outros dados que podem tornar-se úteis em determinados cenários.
A área de trabalho é capaz de exibir quatro conjuntos distintos de campos, denominados grupos de campos. Cada grupo tem um enfoque específico, sendo o primeiro o padrão (default), o segundo voltado as tarefas, o terceiro a memória e o quarto aos usuários. Utilize o comando ‘G’ para escolher qual dos quatro você deseja visualizar. Se for necessário saber quais dados serão exibidos em cada grupo de campos, utilize o comando ‘A’ e a área de tarefas será dividida em quatro partes, cada uma com um conjunto de campos.

Conjuntos de campos no top
É possível alterar os campos que serão exibidos em cada grupo. Utilize o comando ‘f’ e serão exibidos todos os campos disponíveis. O que são exibidos são precedidos por um asterisco e uma letra maiúscula, enquanto os outros seguem-se a uma letra minúscula. Pressionando a letra que os identificam, os campos serão habilitados ou desabilitados no grupo de campos corrente. Para alterar a ordem na qual os campos aparecem, utilize o comando ‘o’ para ter acesso a uma tela idêntica a do comando anterior. Pressionando a letra precedente em maiúscula, o campo relativo será deslocado para a esquerda e, inversamente, pressionando a letra em minúscula, o campo será deslocado para a direita. Para sair tanto da tela do comando ‘f’ como do comando ‘o’, pressione uma tecla que não corresponda a nenhum campo, como as teclas numéricas ou o ESC.
Reordenando os dados
Outro desejo do usuário pode ser ordenar os dados por algum determinado campo. Os comandos ‘F’ ou ‘O’ levam a tela de seleção de coluna de ordenação. Basta clicar na letra indicativa do campo desejado para fazer a alteração. Essa ordenação ocorre por valores internos, o que pode acarretar uma ordenação incompreensível em campos como o do terminal associado ao processo. Uma forma mais rápida de ordenar é utilizar os seguintes comandos
- M – Porcentagem de memória
- N – Número de identificação de processo
- P – Porcentagem de uso de UCP
- T – Tempo de utilização da UCP
Outra técnica para alterar o campo de ordenação é utilizar os comando ‘<’ para ordenar pelo campo à esquerda do atual campo de ordenacao ou ‘>’ para o campo à direita do mesmo. O comando ‘R’ é utilizado para reverter a ordenação indo do maior para o menor ou vice-versa
Alterando a quantidade de processos exibidos
Utilize os comandos ‘n’ ou ‘#’ para informar a quantidade máxima de processos a serem exibidos. Se informar 0 para retornar à exibição padrão.
Acompanhando processos
Outra situação possível é a administrador que deseja verificar alguns processos específicos. A solução seria utilizar os comandos
top -p 5200 -p 5300
ou
top -p 5200, 5300
De ambas as formas, o top irá acompanhar apenas os processos com PID 5200 e 5300. Tenha cuidado com a segunda forma, não deixando espaço antes da vírgula. A primeira forma permite listar até 20 processos. Nao há limite de quantidade de processos na segunda forma. E as duas formas podem ser utilizadas concomitantemente. Se, em algum instante, o administrador quiser ver os outros processos, não será necessário reiniciar o top. Para isso, bastará digitar o comando ‘=’, na linha de comandos do programa.
Matando ou enviando um sinal para um processo
Pressione o comando ‘k’ e você receberá um prompt para indicar o PID de algum processo. Ao fazer isso, será perguntado qual sinal deve ser enviado ao processo com esse PID – você pode informar tanto o valor numérico do sinal como o seu nome. O sinal enviado por default é o 15 (SIGTERM). Caso você arrependa-se ou pressione ‘k’ acidentalmente, deixe o PID em branco para abortar o envio de sinal. Se o arrependimento vier somente após o processo já ter sido escolhido, escolha 0 (zero) como sinal a enviar. O comando ‘k’ não poderá ser utilizado se o top estiver em modo seguro.
Alterando o nice de um processo
Pressione o comando ‘r’ na linha de comandos para informar o PID de um processo e o novo valor de nice a ser atribuído a ele. Lembre-se que usuários comuns não podem aumentar o nice de seus processos, atribuindo a eles um valor menor do que seu valor corrente. Este comando também não pode ser utilizado quando o programa estiver sendo utilizado em modo seguro.
Linha de comando ou nome de programa?
Por default, a área de processos exibe uma coluna com o nome do programa associado a cada processo. Duas formas permitem visualizar a linha de comando utilizada para inicializar este programa. Uma destas formas e executar o top desta forma:
top -c
A outra forma e utilizar o comando ‘c’ durante a execução do programa.
Ignorando processos ociosos
Muitos dos processos do sistema estão ociosos a cada instante de tempo. Mesmo assim, você terá de conviver com eles na área de processos. A não ser que o programa seja inicializado assim:
top -i
Desta forma, não serão exibidos os processos que estejam ociosos ou que sejam zumbis. Isto também pode ser obtido com o comando ‘i’.
Analisando threads
Se seu objetivo é realizar uma análise mais acurada ou meramente estudar o comportamento do sistema operacional, pode ser que você queira ver a lista de threads e não a lista padrão, que é sumarizada por processos. Para tal, inicie o top desta forma:
top -H
Valores para mais de um núcleo ou processador
Por padrão, a porcentagem de uso de processador não leva em consideração a quantidade total de processadores ou núcleos disponíveis. Um determinado processo pode ter indicado o uso de 120% do tempo do processador, quando na verdade ele esteja utilizando 60% do tempo de cada núcleo de um processador de dois núcleos. Para exibir estes dados de forma mais apropriada (ou não), utilize o comando ‘I’ para alternar entre os modos Irix (padrão) ou o modo Solaris
Acumulando tempo
Podemos obter o tempo de processador consumido para cada processo na área de processos do top. Contudo, é possível que seja do interesse do administrador avaliar não o tempo de cada processo, mas o acumulado do processo e dos processos filhos já “mortos”. Para tal, o top tem um modo de operação para esta situação. O modo cumulativo desativado é o padrão. Uma vez ativado, será exibido o tempo acumulado, como dito acima. Basta iniciar o programa com
top -S
para que ele opere no modo cumulativo oposto ao último modo cumulativo anteriormente gravado. Outra forma de utilizar o modo cumulativo é com o comando ‘S’
A vida deve ser colorida
Seu terminal suporta o uso de cores e o máximo que você consegue é utilizar o top com destaque de certos dados com negrito? Se lhe agrada ou for necessário, os dados exibidos podem ser colorizados. Comece por utilizar o comando ‘Z’ para alterar o mapa de cores. A tela deve ser alterada para uma com um exemplo de como a interface ficará quando colorizada. Pressione a letra que indica a área para a qual você deseja selecionar uma cor (S para a área de resumo do sistema, M para a linha de comando, H para os cabeçalhos de colunas e T para a área de tarefas) e o algarismo da cor desejada (de 0 a 7). Quando o resultado ficar do seu agrado, pressione ENTER. Pressionando ‘a’ ou ‘w’ você altera o grupo de comandos, podendo escolher cores distintas para cada um deles.
Dica: Selecionar as mesmas cores em cada um dos quatro grupos de comandos, exceto para os cabeçalhos de colunas. Ao selecionar uma cor de cabeçalho para cada grupo, será fácil identificar o grupo corrente.
O comando ‘z’ irá habilitar ou não o uso das cores. Combinar cores com o destaque por negrito (comandos ‘b’ e ‘B’), irá criar interface mais agradáveis ou absolutamente medonhas, só depende de você.

Comando top com interface colorida
Gravando as configurações
Após conhecer e tornar-se íntimo das opçoes do top, você passa a ajustar certos parâmetros no início de toda execução do programa. Facilite sua vida digitando o comando ‘W’. Isso gravará as configurações deste programa em um arquivo e as próximas execuções do mesmo serão realizadas com os parâmetros gravados.
Truques – Acompanhando o escalonamento
Este truque é baseado em utilizar um intervalo de atualização muito baixo e acompanhar o escalonamento de processos de forma como nenhuma outra ferramenta pode fazer
- Maximize um terminal
- Digite
nice -n -10 -d 0.09 fazendo com o top rode com nice alto e intervalo de 9 centésimos de segundo
- Destaque a linha do processo em execução em reverse highlight
- Teste ordenar por TIME ou MEM
Truque – O top no topo
Este truque irá alterar as configurações gravadas para o top. Se desejar, faça um backup das suas configurações
- Inicie o top
- Digite, na seqüência, os comandos ‘T’, ‘W’ e ‘q’
- Reinicie o top com top -d0
O top estará ordenado por tempo de processador, veja o próprio top subindo. Ele conseguirá atingir o topo?
Conclusão
Com o comando top, o administrador do sistema pode utilizar-se de diversos recursos para analisar o comportamento dos processos. E você, tem algum segredo para contar sobre o top? Ou sugestão de uso dos recursos aqui apresentados?