LINUX: Processos com HTOP

Htop é uma ferramenta de monitoramento em tempo real muito avançada e interativa para processos Linux . Isto é muito similar ao comando Linux top, mas tem algumas características ricas como interface amigável para gerenciar processos, teclas de atalho, vista vertical e horizontal dos processos e muito mais.

Instalação

Debian + (baseadas)

# apt-get install htop

Agora para iniciar basta digitar o seguinte comando a partir do seu terminal:

# htop

Você vera uma tela parecida com a seguinte:

Vamos conhecer o ambiente: Informações do processador, consumo de memória etc:

Informações detalhadas sobre os processos:

Na parte inferior ainda é possível usar as funções de filtrar processos, ordená-los e até mesmo finalizá-los:

Descrição dos campos:

CampoDescrição
PIDID do processo
USERDono do processo
PRIPrioridade do processo (Varia de 0 a 139, sendo que quanto menor mais prioridade)
NI“Nices Values” afeta o valor da prioridade do processo (Varia de -20 a 19)
VIRTTotal de memória requerida pelo processo (não necessariamente está toda em uso)
RESQuantidade de memória RAM que o processo está utilizando
SHRTotal de memória Compartilhada usada pelo processo
SEstado atual do processo
CPU %Percentual de tempo de CPU que o processo está utilizando
MEM %Percentual de Memória RAM que o processo está utilizando
TIME +Tempo de processador que o processo está utilizando
COMMANDComando que iniciou o processo

Comandos são suportados:

Setas, PgUP, PgDn, Home, EndPercorra a lista de processos
Espaço“Marca”: marca de um processo. Comandos que podem operar para “matar” um processo.
U“desmarcar” todos os processos (remover todas as tags adicionadas com a tecla Espaço).
F1, hAjuda
F2, SConfiguração. Lá você pode configurar metros exibido no topo lado da tela, bem como definir várias opções de tela, escolha entre os esquemas de cores e escolha o layout do exibido colunas.
F3, /Processo de pesquisa: digite parte de uma linha de comando do processo
e destaque da seleção será transferida para ele. Enquanto na pesquisa
modo, pressionar esta tecla irá percorrer as ocorrências correspondentes.
F4, IInverter a ordem de classificação
F5, tOrganize os processos de paternidade, e o layout mostrado como uma árvore.
F7, ], –Aumentar a prioridade do processo selecionado. Isso pode ser feito apenas para o superusuário.
F8, [, +Diminua a prioridade do processo selecionado.
F9, k “Matar o processo”: envia um sinal que é selecionado em um menu, para um
ou um grupo de processos. Se os processos foram marcados.
F10, q Sair
umostra os processos pertencentes a um usuário especificado.
MOrdenar por uso de memória.
POrdenar por uso de processador.
TOrdenar por hora.

Opções via CommandLine

O htop permite que você passe opções/ argumentos na execução dele para ajudar na analise

Definir Delay

O comando htop muda as informações apresentadas rapidamente, pois os processos estão constantemente sendo atualizados. Com o comando abaixo o resultado é atualizado com o Delay (atraso) que você definir:

htop -d 15

O argumento acima tem o delay de 1 segundo, pois é calculado em décimo de segundo.

Filtro com PID

É possível filtrar com um determinado PID e exibir as informações deles

htop -p 1,19296

Gostou? Se tiverem algumas sugestões, dica ou se ficou com alguma dúvida sobre este post, não tem problema! Basta comentar no que iremos responder suas dúvidas assim que for possível.

Fonte: linux.die, Treinaweb, ironlinux, remontti

POWERSHELL: Trabalhando com Serviços

Hoje vamos demostrar com você pode administrar os serviços do Windows pelo PowerShell, a versão que estamos usando é a PowerShell7.4

Há oito cmdlets de Serviço principal, projetados para uma ampla variedade de tarefas de serviço. Este artigo analisa apenas a listagem e a alteração do estado de execução dos serviços. Você pode obter uma lista de cmdlets de serviço usando Get-Command *-Service. Você pode encontrar informações sobre cada cmdlet usando Get-Help , como Get-Help New-Service.

Obtenção de serviços Get-Service

É possível obter os serviços em um computador local ou remoto usando o cmdlet Get-Service, usar o comando Get-Service sem parâmetros retornará todos os serviços. Você pode filtrar por nome, até mesmo usando um asterisco como um caractere curinga:

PS> Get-Service -Name se*

Status    Name          DisplayName
------    ----          -----------
Running   seclogon      Secondary Logon 
Running   SENS System   Event Notification 
Stopped   ServiceLayer  ServiceLayer

Como nem sempre é aparente qual é o nome real do serviço, você pode achar que precisa localizar os serviços pelo nome de exibição passando o parâmetro -DisplayName. Você pode pesquisar por nome específico, usar caracteres curinga ou fornecer uma lista de nomes de exibição:

PS> Get-Service -DisplayName se* 

Status   Name            DisplayName 
------   ----            -----------
Running  lanmanserver    Server 
Running  SamSs Security  Accounts Manager 
Running  seclogon        Secondary Logon 
Stopped  ServiceLayer    ServiceLayer 
Running  wscsvc          Security Center

Como obter serviços remotos

Com o Windows PowerShell, você pode usar o parâmetro -ComputerName do cmdlet Get-Service para obter os serviços em computadores remotos. O parâmetro -ComputerName aceita vários valores e caracteres curinga, por isso você pode obter os serviços em vários computadores com um comando. O exemplo abaixo obtém obtém os serviços no computador remoto Server01.

Get-Service -ComputerName Server01

A partir do PowerShell 6.0, os cmdlets *-Service não têm o parâmetro -ComputerName. Você ainda pode obter serviços em computadores remotos com a comunicação remota do PowerShell. Por exemplo, o comando a seguir obtém os serviços no computador remoto Server02.

Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service }

Você também pode gerenciar serviços com os outros cmdlets *-Service. Para obter mais informações sobre comunicação remota do PowerShell, confira about_Remote.

Obtenção dos serviços necessários e dependentes

O cmdlet Get-Service tem dois parâmetros que são muito úteis na administração de serviços:

O parâmetro RequiredServices obtém serviços dos quais depende o serviço LanmanWorkstation.

PS> Get-Service -Name LanmanWorkstation -RequiredServices
 
Status   Name      DisplayName 
------   ----      ----------- 
Running  MRxSmb20  SMB 2.0 MiniRedirector 
Running  bowser    Bowser 
Running  MRxSmb10  SMB 1.x MiniRedirector 
Running  NSI       Network Store Interface Service

O parâmetro DependentServices obtém que requerem o serviço LanmanWorkstation.

PS> Get-Service -Name LanmanWorkstation -DependentServices 

Status   Name         DisplayName 
------   ----         ----------- 
Running  SessionEnv   Terminal Services Configuration 
Running  Netlogon     Netlogon 
Stopped  Browser      Computer Browser 
Running  BITS         Background Intelligent Transfer Ser…

O comando a seguir obtém todos os serviços com dependências. O cmdlet Format-Table para exibir as propriedades Status, Name, RequiredServices e DependentServices dos serviços.

Get-Service -Name * | Where-Object {$_.RequiredServices -or $_.DependentServices} | Format-Table -Property Status, Name, RequiredServices, DependentServices -auto

O Get-Service cmdlet obtém todos os serviços no computador e envia os objetos pelo pipeline. O Where-Object cmdlet seleciona os serviços cuja propriedade DependentServices não é nula.

Os resultados são enviados pelo pipeline para o Format-List cmdlet. O parâmetro Property exibe o nome do serviço, o nome dos serviços dependentes e uma propriedade calculada que exibe o número de serviços dependentes para cada serviço.

hora fixar algumas coisas básicas

Vamos realizar um filtro utilizando as colunas status para retomar todos os serviços ativos (status running), vamos usar o cmdlet a seguir:

get-service | where-object { $_.Status -eq “running” }

Get-Service Obtém todos os serviços no computador e envia os objetos pelo pipeline. O Where-Object cmdlet seleciona apenas os serviços com uma propriedade Status igual a Running. O status é apenas uma propriedade de objetos de serviço. Para ver todas as propriedades, digite Get-Service | Get-Member.

Agora vamos realizar um filtro utilizando as colunas name para retomar os serviços desejado, para verificarmos um serviço específico, devemos usar o seguinte cmdlet:

get-service | where-object { $_.Name -eq "netlogon" } ou ainda get-service netlogon

Se quisermos validar determinados serviços com uma expressão de texto, devemos utilizar o seguinte cmdlet:

get-service | where-object { $_.Name -like "wmi*<em>" } ou ainda get-service wmi</em>

Obter serviços que começam com uma cadeia de caracteres de pesquisa e uma exclusão

Este exemplo obtém apenas os serviços com nomes de serviço que começam com win, exceto para o serviço WinRM.

Get-Service -Name "win*" -Exclude "WinRM"

Parar, iniciar, suspender e reiniciar serviços

Todos os cmdlets de serviço têm o mesmo formato geral. Os serviços podem ser especificados pelo nome comum ou pelo nome de exibição, assumindo listas e caracteres curinga como valores.

Para interromper o spooler de impressão, use:

Stop-Service -Name spooler

Para iniciar o spooler de impressão depois de interrompido, use:

Start-Service -Name spooler

Para suspender o spooler de impressão, use:

Suspend-Service -Name spooler

Para reiniciar (para e depois iniciar) o spooler de impressão, use:

Restart-Service -Name spooler

WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...

Observe que você recebe uma mensagem de aviso repetida sobre a inicialização do Spooler de impressão. Quando você executa uma operação de serviço mais demorada, o PowerShell o notifica de que ainda está tentando executar a tarefa.

Se você quiser reiniciar vários serviços, poderá obter uma lista de serviços, filtrá-los e então executar a reinicialização:

Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service

WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
Restart-Service : can't stop service 'Logical Disk Manager (dmserver)' because
 it has dependent services. It can only be stopped if the Force flag is set.
At line:1 char:57
+ Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service <<<<
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...

Esses cmdlets de serviço não têm um parâmetro ComputerName, mas você pode executá-los em um computador remoto usando o cmdlet Invoke-Command. Esse comando reinicia o serviço de Spooler no computador remoto Server01.

Invoke-Command -ComputerName Server01 {Restart-Service Spooler}

Aqui vou trazer mais alguns exemplos que servem para os demais cmdlets anteriores, o comando a seguir reinicia os serviços que têm um nome de exibição que começa com Net, exceto para o serviço Logon de Rede:

C:> Restart-Service -DisplayName "net*" -Exclude "net logon"

Agora vamos iniciar todos os serviços de rede parados

C:> Get-Service -Name "net*" | Where-Object {$_.Status -eq "Stopped"} | Restart-Service

Esse comando inicia todos os serviços de rede interrompidos no computador.

Esse comando usa o Get-Service cmdlet para obter objetos que representam os serviços cujo nome de serviço começa com net. O operador de pipeline (|) envia o objeto de serviços para o Where-Object cmdlet, que seleciona apenas os serviços que têm um status de parado. Outro operador de pipeline envia os serviços selecionados para o Restart-Service.

Na prática, você usaria o parâmetro WhatIf para determinar o efeito do comando antes de executá-lo.

Mais a frente vamos falar um pouco mais sobre o Set-Service, Execução remota e Suspend-Service:

Gostou? Se tiverem algumas sugestões ou dicas deixem nos comentários.

Fonte: learn.microsoft, linhadecodigo

DOCKER: Comandos básicos

Se você trabalha com sistemas linux, sem dúvidas já deve ter ouvido falar sobre os comandos Docker, utilizados com frequência. De modo simples, o Docker é um software que permite a criação de containers no sistema linux. Assim, existem inúmeros comandos Docker, que podem ser adotados. Mas, muitos profissionais ou iniciantes na área ainda ficam confusos sobre quais são os comandos básicos, mais utilizados no ramo.

Por isso, pensando em te ajudar, trouxemos este conteúdo completo, com tudo o que você precisa saber sobre os comandos Docker e suas aplicações.

Docker info

Quando nós acabamos de subir o Docker Engine, nós utilizamos esse comando para verificarmos as informações do nosso Docker Host.

docker info

Docker version

Com o version nós conseguimos ver a versão do nosso Client, para esse artigo estou utilizando o Windows e o Server que para esse exemplo estamos utilizar o Linux. Quanto ao OS/Arch do server nós podemos trabalhar com Windows ou Linux, caso você esteja utilizando o Docker for Windows basta clicar em Swith to Windows Containers que ele irá realizar essa alteração.

docker version

Docker images

Nós utilizamos ele para listarmos as imagens que nós temos no nosso host, como eu acabei de instalar o Docker no meu Windows a lista está vazia como podemos ver na imagem a baixo:

docker images

  • Repository: repositório;
  • TAG: tag utilizada no repositório;
  • IMAGE ID: o id na nossa imagem;
  • Created: data de quando nós criamos a nossa imagem;
  • Size: tamanho da imagem;

Docker search

Para que possamos procurar uma imagem, nós podemos utilizar o comando a baixo com o parâmetro nome Ex.: ubuntu, dotnetcore, node… etc, assim ele irá buscar as imagens que são compatíveis com o nosso server que para esse exemplo estamos utilizando o Linux.

docker search (parametro)

Docker pull

Quando encontrarmos a imagem que precisamos para a nossa aplicação, nós precisamos baixar ela para o nosso host, para esse exemplo nós iremos utilizar uma imagem do Node.js

docker pull (parametro)

docker images

O Docker images é responsável por gerenciar todas as imagens do container e conta com uma sequência de subcomandos como mostra a lista abaixo, mas não abordarmos aqui.

  • docker image build;
  • docker image history;
  • docker image import;
  • docker image inspect;
  • docker image load;
  • docker image ls;
  • docker image prune;
  • docker image pull;
  • docker image push;
  • docker image rm;
  • docker image save;
  • docker image tag;
docker images
docker image (parametro)

Docker run

Para que nós possamos criar um contêiner, nós precisamos de uma imagem. Caso você não tenha essa imagem no seu host ainda ele irá até o repositório central e irá baixar ela para o seu host, em seguida ele irá criar o contêiner. Vamos criar um exemplo com o famoso Hello World. Para isso, execute o comando a baixo:

docker run (parametro)

Notem na imagem acima que o docker procurou a imagem no nosso host, como ele não encontrou ele baixou ela do docker hub. Agora execute o comando docker images novamente no seu terminal e note que temos uma nova imagem.

Os parâmetros mais utilizados na execução do container são:

  • -d Execução do container em background
  • -i Modo interativo. Mantém o STDIN aberto mesmo sem console anexado
  • -t Aloca uma pseudo TTY
  • –rm Automaticamente remove o container após finalização (Não funciona com -d)
  • –name Nomear o container
  • -v Mapeamento de volume
  • -p Mapeamento de porta
  • -m Limitar o uso de memória RAM
  • -c Balancear o uso de CPU

Docker ps

Agora vamos verificar o status do nosso contêiner, execute o comando acima no seu terminal, ele irá retornar a imagem a baixo:

Os parâmetros mais utilizados na execução do container são:

  • -–all, -a, que mostram todos os contêineres em execução;
  • -–filter, -f, responsável por filtrar a saída com base nas condições fornecidas;
  • -–format, que apresenta todos os containeres impressos, usando o modelo de template Go;
  • -–last , -n -1, capaz de mostrar apenas o número de últimos contêineres criados (inclui todos os estados, sejam os em execução ou não);
  • –-latest , -l, responsável por mostrar o último contêiner criado (que também pode incluir todos os estados);
  • -–no-trunc, impede que a saída seja “truncada”;
  • -–quiet , -q, que permite a exibição apenas dos IDs de todos os contêineres apresentados;
  • -–size , -s, capaz de calcular e apresentar o tamanho total dos arquivos.
docker ps (parametro)

Notem que ele está retornando uma lista vazia, isso acontece porque os contêineres nascem e morrem, quando nos executamos o comando docker run hello-world ele realizou todos os processos e morreu. Para que possamos ver ele podemos executar o comando docker ps com o parâmetro -a, assim teremos uma lista de todos os contêineres do nosso host.

docker ps -a

Docker status

Para que possamos ter informações sobre um contêiner nos executamos o comando acima, ele nos retorna dados como:

docker stats (id ou apelido do container)
  • CONTAINER — ID do Container;
  • CPU % — uso de CPU em porcentagem;
  • MEM USAGE / LIMIT — Memória usada/Limite que você pode ter setado;
  • MEM — uso de memória em porcentagem;
  • NET I/O — I/O de Internet;
  • BLOCK IO — Outros processos de I/O;

Vejamos a baixo alguns dos parâmetros que podemos utilizar com ele:

  • –all, -a, Mostrar todos os contêineres (o padrão mostra apenas em execução)
  • –format, Formate a saída usando um modelo personalizado: ‘tabela’: imprima a saída em formato de tabela com cabeçalhos de coluna (padrão) ‘tabela TEMPLATE’: imprima a saída em formato de tabela usando o modelo Go fornecido ‘json’: imprima em formato JSON ‘TEMPLATE’: imprima saída usando o modelo Go fornecido. Consulte https://docs.docker.com/go/formatting/para obter mais informações sobre como formatar a saída com modelos
  • –no-stream, Desative as estatísticas de streaming e obtenha apenas o primeiro resultado
  • –no-trunc, Não trunque a saída

Veja um exemplo:

Para listar todas as estatísticas dos contêineres com seus nomes, porcentagem de CPU e uso de memória em formato de tabela, você pode usar:

docker stats –format “table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}”

Docker inspect

Caso você precise de mais detalhes sobre a sua imagem ou o seu contêiner, podemos utilizar o comando inspect. Ele irá retornar um json com todas as informações relacionadas a nossa busca. No exemplo a baixo nós estamos executando ele na nossa imagem node.

docker inspect (id da imagem ou container)

Docker rmi

Caso você tenha baixado uma imagem errada ou queira deletar alguma por um outro motivo, basta executar o comando a cima que ele deleta ela do seu host. Vamos deletar a nossa imagem que baixamos no exemplo anterior.

docker rmi (nome da imagem)

Docker exec

Com o exec nós podemos executar qualquer comando nos nossos contêineres sem precisarmos estar na console deles.

docker exec (id_container ou nome_container)

Vejamos a baixo alguns dos parâmetros que podemos utilizar com ele:

  • -i permite interagir com o container
  • -t associa o seu terminal ao terminal do container
  • -it é apenas uma forma reduzida de escrever -i -t
  • –name algum-nome permite atribuir um nome ao container em execução
  • -p 8080:80 mapeia a porta 80 do container para a porta 8080 do host
  • -d executa o container em background
  • -v /pasta/host:/pasta/container cria um volume ‘/pasta/container’ dentro do container com o conteúdo da pasta ‘/pasta/host’ do host

Para que possamos testar ele, iremos baixar uma imagem do ubuntu. Para isso, execute o comando a baixo no seu terminal:

docker run -it -d ubuntu /bin/bash

Execute o comando docker ps agora e note que o nosso contêiner esta em up.

docker ps

Até aqui nós temos nenhuma novidade, vamos agora criar um novo diretório dentro do nosso contêiner sem precisarmos entrar nele.

docker exec 8b54c76e81b7 mkdir /temp/

Agora vamos criar um arquivo dentro do nosso diretório temp que acabamos de criar dentro do nosso contêiner:

docker exec 8b54c76e81b7 touch /temp/dotnetsp.txt

Docker attach

Vamos agora entrar dentro do nosso contêiner e verificar o nosso novo arquivo criado. Para isso execute o comando acima + o nome do ou id do seu contêiner, podemos observar que a execução dele irá nos dar acesso de root no nosso contêiner.

docker attach (id_container ou nome_container)

Agora execute o comando ls /temp para verificar o nosso arquivo dentro diretório que nós criamos chamado temp:

para sair do contêiner execute o comando exit.

Docker start

Quando nós saimos do nosso container com o comando exit, ele mata o nosso processo. Notem na imagem a baixo que ele não está mais sendo listado no nosso comando docker ps:

docker start (id do container)

Para que possamos dar um dettach ou em outras palavras sair sem fecharmos ele, nós precisamos dos comandos: Ctrl+p + Ctrl+q. Para que possamos subir ele novamente vamos utilizar o comando start.

Agora execute o comando attach novamente para entrar no seu contêiner e depois os comandos: Ctrl+p + Ctrl+q, em seguida podemos verificar que o nosso contêiner ainda está em execução:

Docker stop

Para que possamos parar um contêiner que esteja sendo executado, nós utilizamos o comando stop. Sua execução é bem simples, nós passamos o mesmos parâmetros que utilizamos no start.

docker stop (id ou nome container)

Mapeamento de Portas

-p host:container

Para que possamos testar o mapeamento de portas iremos baixar a imagem do ngnix e passarmos para ele a porta 80. Para isso execute o comando a baixo no seu terminal:

docker run -it -p 8080:80 nginx

Ele irá baixar a imagem do nginx para o seu host e abrir ele na porta 8080 do seu host. Para testar assim que ele finalizar a execução do comando acima, abra no seu navegador o endereço: http://localhost:8080/, podemos ver o seu retorno na imagem a baixo.

Mas executando ele dessa forma nós ficamos com o nosso console travado conforme podemos ver na imagem a baixo:

Para que possamos ter um contêiner sendo executado em background, nós podemos utilizar eles em segundo plano. Para isso, só precisamos passar o comando -d. Caso ainda esteja o seu contêiner ainda esteja sendo executado, execute o comando control c para sair dele, em seguida execute o mesmo comando anterior só que agora com o parâmetro -d:

docker run -it -d -p 8080:80 nginx

Por fim, execute o comando docker ps e veja ele na lista:

Com isso nós passamos por alguns dos comandos principais do docker.

Gostou? Se tiverem algumas sugestões ou dicas deixem nos comentários.

Fonte: programadriano, certificacaolinux, docs.docker