Identify CPU/memory intensive processes, adjust process priority with renice, and kill processes:

A qualquer altura enquanto um sistema está a trabalhar existem vários programas e processos que estão a decorrer, sendo que par termos um controlo total do nosso sistema não só temos de controlar quais os processos que estão a qualquer instante a decorrer como, caso necessário terminar programas indesejados. Para conseguirmos fazer isso podemos aproveitar alguns utilitários existentes no sistema, nomeadamente o top e o ps.

# top

# ps -aux

Ou

# ps -edf

O utilitário top devolve-nos, em tempo real, informações relativamente a percentagem de processador que esta a ser utilizada pelo sistema (juntamente com as médias arredondadas nos últimos 1 / 5 / 15 minutos), a percentagem de Memoria Ram e Swap a serem utilizadas e para que fins, e todos os processos que estão a decorrer. Cada processo é segmentado em diferentes colunas, cada uma relativa a informações sobre o processo em questão , sendo que algumas mais relevantes a destacar seriam a primeira coluna que indica qual é o PID (Process ID ), e a coluna “NI” responsável por indicar o nível nice do processo (Nível de prioridade do processo no sistema).

O utilitário ps, ao contrário do top, não devolve informações em tempo real, mas sim retira um snapshot do sistema anotando todos os processos a correr na altura que o comando é lançado num terminal. Note-se que ambos os programas são bastantes úteis aquando despistagem de problemas no sistema, notando ainda que o ps tem valor acrescido sendo que pode ser facilmente manipulável de modo a mais facilmente integrar em scripts de troubleshoting e monitorização de sistema.

Estes utilitários são bem mais complexos e devolvem bem mais informação ao utilizador, sendo que é fulcral conhecer os mesmos devidamente de forma a sabermos interpretar toda a informação que estes devolvem. Para mais informações deverá ser consultado os diferentes recursos online:

http://man7.org/linux/man-pages/man1/top.1.html

https://www.ibm.com/support/knowledgecenter/en/ssw_aix_71/com.ibm.aix.cmds4/ps.htm

Tendo uma boa noção de quais processos estão a ser executados no nosso sistema é natural termos a necessidade de por algum motivo, terminar, algum(ns) desses processo(s). Para agirmos em conformidade podemos usar o comando kill ou killall:

# kill [PID]

Note-se ainda, que caso por ventura não se saiba ainda o PID do processo que se pretende terminar podemos usar comandos como pgrep e pkill que aceitam uma string como input e procuram no sistema algum processo que corresponda ao que foi introduzido.

Existem ainda outro grupo de comandos que são focados para obter informações de partes especificas do sistema. De seguida serão referidos alguns desses programas de forma breve:

  • Caso seja pretendido apenas obter os níveis da Memória RAM, podemos usar o comando free, que juntamente com a flag -hmostra ao utilizador os valores em forma compreensível:

# free -h

  • Caso queiramos ver os valores do disco, para termos uma noção do espaço disponível podemos usar o comando df que utiliza uma abordagem semelhante ao comando free:

# df -h

  • Se pretendermos ver e monitorizar portas de rede TCP\UDP podemos usar o comando ss, sabendo que as opções mais recorrente-mente utilizadas são -l\-t\ -p (--listenning \ --tcp \ --processes):

# ss -ltp

  • Se quisermos ver e ter uma noção das ações que estão a ser tomadas pelo kernel, a qualquer instante podemos tomar recursos do comando dmesg cuja função é demonstrar ao user as mensagens presentes no “Kernel Ring Buffer”.

# dmesg

  • Se o nosso objetivo for alterar o nível nice de algum processo podemos usar o comando nice para executar o mesmo num nível pretendido, ou o programa renice que vai alterar o nível de prioridade de um programa já em execução.

# nice [opções] [comando]

# renice -n [nivel] [comando]

  • Na eventualidade de pretendermos ver a estrutura dos serviços no nosso sistema, de forma a perceber a sua organização a nível de ordem de execução podemos usar o comando pstree.

Last updated

Was this helpful?