Ir para o conteúdo

5. Gerenciamento de processos

Gerenciar processos em um sistema operacional é uma das tarefas mais comuns e essenciais para administradores de sistemas e usuários avançados. O PowerShell oferece uma série de cmdlets e funções que permitem monitorar, listar, e manipular processos de maneira eficiente. Neste tópico, exploraremos como trabalhar com processos em execução, como utilizar o comando Tasklist, e como finalizar processos específicos.

5.1 Processos em Execução

Um processo em execução é um programa ou aplicação que está atualmente sendo executado no sistema. Cada processo é identificado por um identificador único (PID - Process Identifier) e possui várias propriedades associadas, como nome, uso de memória, tempo de CPU, entre outras.

Listar Processos em Execução

  • Get-Process: O cmdlet Get-Process é usado para listar todos os processos que estão atualmente em execução no sistema. Ele exibe informações detalhadas sobre cada processo, incluindo o nome, PID, uso de CPU, memória, entre outros.

Exemplo:

Get-Process

Filtrar Processos Específicos: Você pode filtrar a lista de processos para exibir apenas aqueles que correspondem a um nome específico.

Get-Process -Name \"notepad\"

Filtrar por PID: Para obter informações sobre um processo específico usando seu PID, use o parâmetro -Id.

Get-Process -Id 1234

Exibir Processos em Ordem de Uso de CPU: Para listar os processos em ordem de uso de CPU, use Sort-Object.

Get-Process | Sort-Object -Property CPU -Descending

Monitoramento de Processos em Tempo Real

  • Atualização Contínua de Processos: Para monitorar os processos em tempo real, você pode utilizar um loop que atualiza constantemente a lista de processos.

while (\$true) {

Get-Process

Start-Sleep -Seconds 5

Clear-Host

}

5.2 Utilizando o Comando Tasklist

Embora o Get-Process seja uma ferramenta poderosa, o comando Tasklist, que é um comando embutido no Windows, oferece uma alternativa para listar processos em execução. Tasklist é comumente utilizado em scripts de linha de comando (cmd) e pode ser chamado diretamente do PowerShell.

Listar Processos com Tasklist

  • Comando Básico: O comando básico para listar processos em execução usando Tasklist é:

tasklist

Filtrar Processos por Nome: Para listar processos específicos com base no nome, use o parâmetro /FI para definir um filtro.

tasklist /FI \"IMAGENAME eq chrome.exe\"

Exibir Detalhes de Memória: Você pode obter detalhes mais específicos, como o uso de memória, para processos em execução.

Processos em execução

tasklist /FI \"IMAGENAME eq chrome.exe\" /FO LIST

  • /svc: Lista todos os serviços em cada processo.

A opção /fi no comando tasklist é usada para aplicar filtros específicos aos processos listados.

  • /fi [filtro]: Exibe um conjunto de tarefas que correspondem ao critério especificado pelo filtro.

tasklist /fi \"cputime gt 00:10:00\"

Explicação dos Parâmetros

/fi: Especifica um filtro a ser aplicado à lista de processos.

\"cputime gt 00:10:00\": Define o critério do filtro:

cputime: Refere-se ao tempo de CPU que o processo tem usado.

gt: Significa \"greater than\" (maior que).

00:10:00: Especifica o valor do tempo em horas, minutos e segundos.

PID eq [número]: Filtra por ID do processo

  • tasklist /fi \"PID eq 1234\"

Status eq [estado]: Filtra por status (RUNNING, NOT RESPONDING).

  • tasklist /fi \"status eq running\"

/fo [formato]: Especifica o formato de saída.

tasklist /fi \"cputime gt 00:10:00\" /fo table

{width="5.175254811898513in" height="1.0589031058617673in"}

Cenários de Uso

Diagnóstico de Desempenho: Administradores de sistemas podem usar esse filtro para identificar processos que estão consumindo uma quantidade significativa de tempo de CPU, o que pode ajudar a identificar gargalos de desempenho ou processos que podem estar travados ou em loop.

Monitoramento de Recursos: Em servidores onde o uso de CPU é crítico, esse comando pode ajudar a monitorar e gerenciar processos que estão utilizando recursos excessivamente.

LIST: Formato de lista.

  • tasklist /fo list

  • tasklist /fo csv

  • tasklist /fo csv >>task.csv -- Salva em um arquivo

  • /v : Exibe informações detalhadas sobre cada tarefa.

  • tasklist /fo csv /v

5.3 Finalizar um Processo Específico

Finalizar um processo é uma operação crítica, geralmente usada para interromper aplicativos que não estão respondendo ou para liberar recursos do sistema.

Finalizar um Processo com PowerShell

  • Stop-Process: O cmdlet Stop-Process é usado para finalizar processos diretamente do PowerShell. Você pode especificar o processo a ser finalizado usando o nome ou o PID.

  • Finalizar por Nome:

Stop-Process -Name \"chrome\"

Finalizar por PID:

Stop-Process -Id 1234

Forçar Finalização: Para forçar a finalização de um processo que não está respondendo, use o parâmetro -Force.

Stop-Process -Name \"notepad\" -Force

O comando taskkill no Windows é usado para finalizar processos em execução. A opção /IM especifica o nome da imagem (processo) a ser finalizado, e a opção /F força a finalização do processo. Vamos explicar cada parte do comando

taskkill /IM nomeDoProcesso.exe /F.

Parâmetros

/IM [nomeDoProcesso.exe]: Especifica o nome da imagem do processo que você deseja finalizar. O nome do processo geralmente termina com .exe.

/F: Força a finalização do processo. Sem esta opção, o comando taskkill solicita uma finalização graciosa do processo. Com /F, ele força a finalização, independentemente de o processo estar respondendo ou não.

Cenários de Uso

Finalizar Processos Não Responsivos: Se um programa travar e não responder, você pode usar o comando taskkill com a opção /F para forçar a finalização do processo.

Gerenciamento de Processos: Administradores de sistemas podem usar este comando para gerenciar e finalizar processos em execução que estão consumindo muitos recursos ou que foram iniciados por engano.