Aprenda nesse artigo como monitorar e encerrar processo num servidor Linux! Tempo estimado de solução: 11min
Todo servidor tem constantemente processos rodando e saber monitorar e encerrar esses processos é muito útil para um administrador. Nesse artigo vamos destrinchar a respeito dos processos num servidor Linux e como monitorá-los e encerrá-los. Vamos lá?
O que é um processo em um servidor?
No Linux, um processo é qualquer instância ativa de um programa. Basicamente, um programa é definido como um arquivo executável e que esteja armazenado em seu servidor. Sempre que se executa um programa, é criado um processo vinculado a ele.
Uma das propriedades de um processo é seu sistema de identificação, que os numera conforme eles são executados no servidor em ordem crescente. Todo processo possuí uma identificação individual chamada de PID (Process ID). Veremos mais a frente nesse artigo como encontrar o PID dos seus processos.
Como monitorar os processos ativos no servidor?
Existem diversas formas de monitorar processos em um servidor, mas uma da formas mais utilizadas é através do comando top
(Table Of Process). Com esse comando você consegue visualizar em uma tabela diversas informações a respeito dos processos ativos no servidor em tempo real. Confira como utilizar o top
:
- Realize acesso ao terminal do seu Servidor via WHM ou SSH.
- Em seguida, insira o seguinte comando no terminal:
$ top
Deve aparecer uma tela semelhante a essa:
Nessa tela temos diversas informações a respeito dos processos do servidor, partindo da primeira linha o top informa sobre o uptime e load average:
10:03:49
– horário atual.up 43 days, 18:48
– o tempo total em que o servidor está ligado.0 users
– número de usuários conectados no momento.load average: 0.05, 0.04, 0.05
– consumo de CPU médio para gerir os processos; entende-se que o valor 1.00 representa que está sendo consumido 100% de uma CPU do servidor. No primeiro campo está a média de consumo no último minuto, no segundo campo, os últimos 5min e no terceiro campo, os últimos 15min.
Já na segunda linha temos algumas informações sobre tasks:
Tasks, 147 total...
– número de processos ativos e em seguida os status delas.running
– mostra quantos processos estão realizando requisições ao servidor e executando normalmente com acesso a CPU.sleeping
– mostra quantos processos estão aguardando recursos.stopped
– mostra quantos processos estão terminando e liberando recursos; estes enviam uma mensagem de terminação aos processos pai.zombie
– mostra quantos processos estão aguardando o processo pai para liberá-los; eles podem se tornar órfãos quando um processo pai é encerrado primeiro.
Geralmente processos do tipo zombie representam um processo finalizado abruptamente. Possuir alguns processos nesse status costuma não ser nenhum problema, mas é bom evitá-los.
Na terceira linha o top traz informações da %CPU(s):
us
– é a porcentagem de tempo gasto executando processos de usuários.sy
– é a porcentagem de tempo gasto executando o kernel.ni
– é a porcentagem de tempo gasto executando tarefas cujo nice foi configurado manualmente. (nice representa a prioridade de um processo, veremos mais a frente)id
– é a porcentagem de tempo gasto inativo.wa
– é a porcentagem de tempo gasto esperando.hi
– é a porcentagem de tempo gasto gerenciando interrupções de hardware.si
– é a porcentagem de tempo gasto gerenciando interrupções de software.st
– é a porcentagem de tempo gasto para a CPU virtual acessar a CPU física.
Na quarta linha o top informa sobre utilização da memória, sendo MiB Mem referente a memória física utilizada, com o valor baseado na memória RAM instalada no sistema:
total
– mostra o total de memória RAM do servidor.free
– mostra o total de memória disponível.used
– mostra o total de memória consumida.buff/cache
– mostra o total de memória sendo utilizado com dados temporários ou em cache.
Na quinta e última linha, o top mostra informações da memória swap utilizada pelo servidor. Essa memória é utilizada pela RAM em situações que é mais rápido armazenar dados nela do que na memória física do sistema.
total
– mostra o total de memória swap do servidor.free
– mostra o total de memória swap disponível.used
– mostra o total de memória swap consumida.buff/cache
– mostra o total de memória swap sendo utilizado com dados temporários ou em cache.
Por fim, o top traz informações a respeito dos processos que estão rodando em tempo real no servidor numa tabela. Confira abaixo o que significa cada coluna do top:
PID
– Process ID do processo.USER
– o usuário dono do processo.PR
– prioridade do processo.NI
– nice do processo.VIRT
– quantidade de memória virtual usada pelo processo.RES
– quantidade de memória física usada pelo processo.SHR
– quantidade de memória compartilhada usada pelo processo.S
– status do processo.%CPU
– a porcentagem de tempo dedicada da CPU para execução do processo.%MEM
– a porcentagem de memória da CPU utilizada para execução do processo.TIME+
– tempo total usado pela CPU para execução da CPU em centésimo de segundo.COMMAND
– o nome do comando ou do processo.
Nice vs Prioridade
No Linux existem duas propriedades que se assimilam, o nice e a priority. O nice é um valor que o usuário pode conceder a um processo para tornar sua prioridade mais alta, esse valor pode variar de -20, sendo a prioridade máxima, 0 a prioridade padrão e +19 a prioridade mínima. Esse valor vai refletir na priority do processo que via de regra segue a seguinte fórmula:
PR = 20 + NI
Além disso, existem alguns comandos dentro do top que podem ser executados, veja algum deles:
- Shift + M – esse comando ordena em ordem decrescente os processos que estão consumindo mais memória (
%MEM
). - Shift + P – esse comando ordena em ordem decrescente os processos que estão consumindo mais tempo da CPU (
%CPU
). - U – esse comando permite que você digite um usuário do servidor e filtre seus processos.
- Q – esse comando sai da tela do top e retorna para a linha de comando.
Para aprender mais sobre o top e diversas outras funcionalidades, confira o manual de utilização do top.
Como encerrar um processo no Linux
Existem algumas formas de se encerrar um processo, mas a mais comum é através do comando kill. Esse comando envia um sinal ao processo e dependendo do sinal enviado, o processo deve reagir de determinada forma.
Como utilizar o comando kill
Para ver o manual de utilização do kill, execute o seguinte comando:
$ man kill
Para listar todos os sinais do kill, execute o seguinte comando:
$ kill -l
Apesar de existirem todos os sinais acima, nesse artigo vamos tratar dos sinais 9 e 15:
- 9) SIGKILL – esse sinal encerra abruptamente um processo. Deve ser utilizado com precaução, pois, pode causar danos ao servidor quando utilizado com descuido.
- 15) SIGKILL – esse sinal informa ao processo que ele precisa ser encerrado, mas dando o tempo dele finalizar suas últimas tarefas se necessário. O kill por padrão já utiliza o sinal 15 sem necessidade de informar o sinal.
Para encerrar um processo com o kill utilize a seguinte sintaxe:
$ kill -[número do sinal] [PID do processo]
Por exemplo, para executar de forma abrupta o processo com PID 7420, execute o seguinte comando:
$ kill -9 7420
Pronto! Agora você sabe encerrar os processos no seu servidor.
Considerações Finais
Nesse artigo você aprendeu sobre como monitorar processos de um servidor pelo comando top e também como encerrar processos com o comando kill.
Se você sentiu alguma dificuldade ou então tem alguma sugestão de algo que não foi mencionado, basta deixar aí nos comentários que no futuro podemos trazer atualizações para este artigo. Também indico esses outros materiais relacionados com este assunto:
Até a próxima! :^)