Gerenciando os processos da máquina com ps

Gerenciando os processos da máquina com ps

por Ricardo Paulino

Tudo começou em 1965 quando um grupo de programadores se uniu para o desenvolvimento de um sistema operacional de tempo compartilhado, eram eles Ken Thompson, Dennis Ritchie, Douglas McIlroy e Peter Weiner.

Esse sistema operacional se chamou Multics, na época esse era um esforço conjunto da AT&T(da Bell laboratories), da GE(General Eletrics) e do MIT(Massachussets Institute of Tecnology).

“Ken Thompson e Dennis Ritchie, os inventores do Unix, trabalharam no Multics até que os laboratórios da Bell abandonaram o esforço no desenvolvimento do Multics em 1969. O nome do sistema Unix(originalmente Unics) é uma brincadeira com o Multics feita por Brian Kernighan. Algumas idéias do Multics foram desenvolvidas mais tarde no Unix.” (fonte: https://pt.wikipedia.org/wiki/Multics)

Em sistemas operacionais de tempo compartilhado, processos podem ser executados em um mesmo núcleo de forma concorrente, por prioridade. Em verdade, em sistemas multitarefa, o tempo do processador é compartilhado entre as aplicações que estão na fila de execução (pipeline). A execução das tarefas passa rapidamente de uma a outra, criando a ilusão de que as aplicações ocorrem de forma conjunta.

Gerenciando os processos

O comando ps foi construído para que os especialistas que otimizam o funcionamento de computadores em grandes empresas pudessem reconhecer as características de cada processo mantido em memória. Essas características permitem o planejamento de como devem ser escritos os arquivos inicialização do sistema bem como a adequação da carga na memória e no(s) processadores durante o funcionamento da máquina por especialistas, para isso escolhendo programas adequados ao bom funcionamento do sistema. Os sistemas operacionais linux guardam essas mesmas características, elas foram mantidas pois o núcleo do linux foi inspirado no núcleo do sistema operacional Unix.

O comando ps fornece informações sobre os processos segundo a tela na imagem abaixo:

 

Gerenciando os processos da máquina com ps

Podemos observar os seguintes rótulos para as informações descritas: “USER”, “PID”, ‘%CPU’, ‘%MEM’, ‘VSZ’, ‘RSS’, ‘TTY’, ‘STAT’, ‘START’, ‘TIME’ e ‘COMMAND’ que descrevem respectivamente:

● USER – identificação do usuário associado(dono) ao processo.
● PID – identificação do processo associado.
● %CPU – tempo de utilização por um processo.
● %MEM – quantidade de memória (RAM) utilizada pelo processo.
● VSZ – tamanho da memória virtual utilizada pelo processo em kiB.
● RSS – tamanho do conjunto de memória residente , da memória não-física que trocou com uma tarefa tem usado.
● TTY – Terminal associado com o processo.
● STAT – estado do processo rodando ou dormido.
● START – tempo em que o processo começou a sua execução.
● TIME – tempo acumulado de CPU.
● COMMAND: comando atual que iniciou este processo em particular.

Conhecidos os termos vamos começar a usar o comando de forma bem simples:

Vamos utilizar o comando ps com o parâmetro -A, a opção -A mostra todos os processos de forma idêntica a opção -e.
ps -A

Gerenciando os ProcessosAqui nesta pequena imagem não foi possível colocar todos os processos, para filtra-los de modo que mostrem as informações dos processos disparados pelo programa “programa” filtraremos a saída da execução desse comando assim:

ps -A | grep chrome

A execução desse comando deve retornar a lista de processos disparados na execução do google-chrome.

tela3Apareceram vários processos porque tenho em execução várias abas. Para cada aba aberta o chrome executa um processo independente, isso muitas vezes o torna rápido porém com alto consumo de memória.

Para podermos ver uma maior utilidade destes recursos para nós vamos imaginar uma situação hipotética na qual eu abri o programa gedit com um arquivo muito grande e ele travou.

Para solucionar o problema primeiro devo procurar o ID do processo para o programa em questão.

Vamos chamar o programa gedit e supor que ele tenha travado, para matar o processo do gedit que esta travado iremos consultar o seu PID primeiro:

ps -A | grep gedir

tela4O ID para o processo do gedit é 4094, para matar esse processo usaremos o comando kill.
kill 4094

tela5O processo foi tirado da lista de execução do pipeline de execução do processador conforme a figura acima. Não entraremos em mais detalhes para que o texto não se torne cansativo.

Qualquer dúvida que apareça podem consulta com o comando:
info ps

Qualquer dúvida podem mandar sua pergunta ao email: [email protected].

Espero que tenham gostado de ver que gerenciando os processos desta forma fica até simples.