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-h
mostra 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 comandofree
:
# 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 programarenice
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?