sábado, 5 de outubro de 2024

Explorando o Comando bc no Linux

 O comando bc (Basic Calculator) é uma ferramenta poderosa no Linux para realizar cálculos matemáticos com precisão arbitrária. Ele pode ser usado tanto de forma interativa quanto em scripts. Neste artigo, vamos explorar desde os exemplos mais básicos até os mais avançados.


Exemplos Básicos

1. Operações Aritméticas Simples

O bc pode ser usado para realizar operações aritméticas básicas como adição, subtração, multiplicação e divisão.


echo "12 + 5" | bc

# Saída: 17


echo "10 - 3" | bc

# Saída: 7


echo "4 * 7" | bc

# Saída: 28


echo "20 / 4" | bc

# Saída: 5


2. Uso de Variáveis

Você pode armazenar resultados em variáveis para uso posterior.


x=$(echo "12 + 5" | bc)

echo $x

# Saída: 17


3. Operações com Decimais

Para trabalhar com números decimais, você pode definir a escala (número de casas decimais).


echo "scale=2; 5 / 3" | bc

# Saída: 1.66


Exemplos Intermediários

1. Operadores de Incremento e Decremento

O bc suporta operadores de incremento (++var) e decremento (--var).


echo "var=10; ++var" | bc

# Saída: 11


echo "var=10; var++" | bc

# Saída: 10 (incrementa após a operação)


2. Operadores de Comparação

Você pode usar operadores de comparação para verificar condições.


echo "5 > 3" | bc

# Saída: 1 (verdadeiro)


echo "5 < 3" | bc

# Saída: 0 (falso)


3. Funções Matemáticas

O bc inclui várias funções matemáticas, como seno, cosseno e exponenciação.


echo "scale=4; s(1)" | bc -l

# Saída: 0.8415 (seno de 1 radiano)


echo "scale=4; e(1)" | bc -l

# Saída: 2.7182 (exponencial de 1)


Exemplos Avançados

1. Scripts com bc

Você pode criar scripts complexos usando bc para cálculos avançados.


echo "define f(x) { return x^3 + 2*x^2 + x + 1 } ; f(3)" | bc

# Saída: 49


2. Loops e Condicionais

O bc permite o uso de loops e condicionais para cálculos iterativos.


echo "for (i=0; i<5; i++) i^2" | bc

# Saída: 0 1 4 9 16


echo "if (5 > 3) 1 else 0" | bc

# Saída: 1


3. Conversão de Bases

Você pode converter números entre diferentes bases, como decimal para hexadecimal.


echo "obase=16; 255" | bc

# Saída: FF


echo "ibase=16; FF" | bc

# Saída: 255


Conclusão

O comando bc é uma ferramenta versátil e poderosa para cálculos matemáticos no Linux. Desde operações básicas até scripts complexos, ele oferece uma ampla gama de funcionalidades que podem ser extremamente úteis para desenvolvedores e administradores de sistemas. Experimente os exemplos acima e explore ainda mais as capacidades do bc!

sexta-feira, 4 de outubro de 2024

Raw Tables - Informix

Introdução

No mundo dos bancos de dados, a eficiência e a segurança dos dados são cruciais. O Informix, um sistema de gerenciamento de banco de dados da IBM, oferece diferentes tipos de tabelas para atender a diversas necessidades. Entre elas, as RAW TABLES se destacam por suas características específicas de não registro de operações. Neste artigo, exploraremos o que são RAW TABLES, suas vantagens, limitações e casos de uso.

O que são RAW TABLES?

As RAW TABLES são tabelas permanentes que não registram operações de inserção, atualização ou exclusão. Isso significa que as operações realizadas nessas tabelas não são registradas nos logs de transação do banco de dados. Essa característica as torna semelhantes às tabelas em um banco de dados sem registro.

Vantagens das RAW TABLES

  1. Desempenho Melhorado: Como as operações não são registradas, as RAW TABLES podem oferecer um desempenho superior em comparação com tabelas que registram todas as transações. Isso é particularmente útil durante a carga inicial de grandes volumes de dados.
  2. Simplicidade na Carga de Dados: As RAW TABLES são ideais para a carga e validação inicial de dados. Utilitários de carga, como dbexport, LOAD statement do DB-Access, ou o High-Performance Loader (HPL) em modo expresso, podem ser usados para carregar dados nessas tabelas.

Limitações das RAW TABLES

  1. Falta de Recuperabilidade: Como as operações não são registradas, não é possível recuperar dados de RAW TABLES em caso de falha, a menos que um backup de nível 0 tenha sido realizado após a última atualização.
  2. Restrições de Uso: Não é possível definir restrições de chave primária, chave única ou referencial em RAW TABLES. Além disso, essas tabelas não devem ser usadas dentro de transações.
  3. Incompatibilidade com Replicação: As RAW TABLES não são compatíveis com a replicação de dados e têm restrições em ambientes de cluster de alta disponibilidade.


Casos de Uso

As RAW TABLES são mais adequadas para cenários onde a carga inicial de dados é crítica e o desempenho é uma prioridade e também em procedures onde normalmente essas cargas são diarias. Após a carga e validação dos dados, é recomendável alterar a tabela para o tipo STANDARD e realizar um backup de nível 0 antes de usá-la em transações.

Exemplo de INSERT INTO em RAW TABLE

Vamos considerar um exemplo prático de como inserir dados em uma RAW TABLE. Suponha que temos uma PROCEDURE onde vamos atualizar essa RAW TABLE  constantemente  chamada raw_data com a seguinte estrutura:

  • Criar a tabela na PROC, onde ela será permanente.

CREATE RAW TABLE  IF NOT EXISTS raw_data (

id SERIAL,

name VARCHAR(50),

value INTEGER

);

  • Limpar os dados da tabela, toda vez que a PROC rodar:
TRUNCATE raw_data 

  • Para inserir dados nessa tabela, você pode usar o comando INSERT INTO da seguinte forma:

INSERT INTO raw_data (name, value) VALUES ('Exemplo', 123); ou

INSERT INTO raw_data (name, value)

SELECT name, value

FROM source_data; 

Este comando insere uma nova linha na tabela raw_data com os valores especificados para as colunas name e value.

Conclusão

As RAW TABLES no Informix oferecem uma solução eficiente para a carga inicial de dados, proporcionando um desempenho superior devido à ausência de registro de operações. No entanto, é importante estar ciente de suas limitações e usá-las adequadamente para garantir a integridade e a segurança dos dados. 

 


sábado, 28 de setembro de 2024

Comandos Linux: explorando memória virtual com vmstat


 Uma visão detalhada do comando vmstat, sua sintaxe básica e como usá-lo.

Há muitos comandos, ferramentas e variações dos dois para você colocar em prática quando se trata de estatísticas do sistema no Linux. No entanto, se você precisa de detalhes sobre memória virtual, usar o vmstat é uma ótima opção.

O que é?

O Virtual Memory Statistics Reporter, também conhecido como vmstat, é uma ferramenta de linha de comando do Linux que relata vários bits de informações do sistema. O VMSTAT relata informações sobre processos, memória, paginação, bloco de I/O, traps, discos e atividade da CPU.

Ao executar o vmstat, tenha em mente que as informações são uma média  solicitadas desde o momento da última reinicialização. Relatórios subsequentes usam medições de atraso e contagem. Eu abordo esses especificamente durante a discussão de sintaxe.

Sintaxe do comando

A sintaxe do comando vmstat é bem simples:

$ vmstat [option][delay [count]]

Opções

delay - O delay entre a atualização em segundos. Se o delay não é especificado,  um relatório é impresso com os valores médios desde a última inicialização.

count - Números de atualizações. Na ausência de count, quando o delay é definido, o padrão é infinito.

-a, --active

Exibe a memória ativa ou inativa. 

-f, --forks

O -f exibe o número de foros desde a inicialização. Isso inclui as sytem calls, fork, vfork e é equivalente ao número total de tarefas criadas. Cada processos é representado por uma ou mais tarefas, dependendo do uso do thread. Esta tela não se repete.

-m, --slabs

Exibe o slabinfo.

-n, --one-header

 Exibe o cabeçalho apenas uma vez e não periodicamente.

-s, --stats

Mostra uma tabela de vários contadores de eventos e estatísticas de memória. Esta tela não se repete. 

-d, --disk

Relatório de estatísticas de disco.

-D, --disk-sum

Relata algumas estatísticas resumidas sobre a atividade do disco 

-p, --partition device 

Estatísticas detalhadas sobre as partições.

-s, --unit character 

Altera a saida entre 1000 (k), 1024 (K), 1000000 (m), ou 1048576 (M) bytes. Observe que isso não altera os campos do swap (si/so) ou block (bi/bo).

-t, --timestamp

 Adiciona timestamp para cada linha

-w, --wide

Modo de saída amplo (útil para sistema com maior quantidade de memória, onde o modo de saída padrão sofre de quebra de coluna indesejada). A saída é mais larga que 80 caracteres por linha.

-y, --no-first

 Omite o primeiro relatório com estatísticas desde a inicialização do sistema.

-V, --version

Mostra informação sobre a versão e sai.

-h, --help

 Mostra ajuda e sai.  

Saída básica e como entendê-la:

A forma mais básica deste comando não usa nenhuma opção. Aqui está a saída padrão e como lê-la:



Você vê informações sobre processos, memória, swap, IO, sistema e CPU. A página man para o comando declara o seguinte (man vmstat):

  • procs
    • r: Número de processos em execução (run queue)
    • b: Número de processos em espera (blocked)
  • memory (são afetados pela opção --unit)
    • swpd: Quantidade de memória virtual usada
    • free: Memória livre.
    • buff: Memória usada como buffer
    • cache: Memória usada como cache
    • inact: a quantidade de memória inativa. (opção -a)
    • active: a quantidade de memória ativa. (opção -a)
  • swap (são afetados pela opção --unit)
    • si: Quantidade de memória trocada do disco para a RAM (/s).
    • so: Quantidade de memória trocada da RAM para o disco (/s).
  • io
    • bi: Blocos recebidos do dispositivo de bloco (disco) (KiB/s)
    • bo: Blocos enviados para o dispositivo de bloco. (KiB/s)
  • system
    • in: número de interrupções por segundo, incluindo o clock
    • cs: número de alteração de contexto por segundo
  • cpu (Essas são porcentagens do tempo total da CPU)
    • us: tempo gasto executando código não-kernel. (Tempo do usuário, incluindo tempos bons)
    • sy: tempo gasto executando o código do kernel. (tempo do sistema)
    • id: tempo gasto ocioso. Antes do Linux 2.5.41, isso inclui o tempo io-wait.
    • wa: tempo gasto esperando por I/O. 
    • st: tempo roubado de uma máquina virtual. Antes do Linux 2.6.11, desconhecido.
    • gu: tempo gasto rodando codigo do KVM guest.

Descrição do campo para o modo disco

  • Reads
    • total: total de leituras completadas com sucesso
    • merged: leituras agrupadas (resultando em um I/O)
    • sectors: leituras de setor com sucesso
    • ms: milissegundos gasto com leituras
  • Writes
    • total: total de escritas completadas com sucesso
    • merged: escritas agrupadas (resultando em um I/O)
    • sectors: leituras de setor com sucesso
    • ms: milissegundos gasto com escrita
  • IO
    • cur: I/O em progresso
    • s: segundos gastos com I/O

Descrição de campos para modo de partições de disco

    • reads: numero total de leituras para essa partição
    • read sectors: total de setor lidos para essa partição
    • writes: numero total de escrita para essa partição
    • requested writes: numero total de requisição de escrita para a partição

Descrição de campos para o modo SLAB

O modo slab mostra estatísticas por slab, para obter mais informações sobre essas informações, consulte Slabinfo (5)

    • cache: nome do cache
    • num: numeros concorrentes de objetos ativos
    • total: números totais de objetos disponíveis
    • size: tamanho de cada objeto
    • pages: numero de paginas com pelo menos um objeto ativo

Notas

vmstat requer acesso de leitura para os arquivos abaixo de /proc. O -m requer acesso de leitura a /proc/slabinfo, que pode não estar disponível para usuários padrão. Opções de montagem para /proc, como sub-SET = PID, também podem afetar o que é visível.

Identificação de Gargalos

Para identificar gargalos, observe as seguintes situações:

  1. CPU:
    1. Se us e sy estão altos, a CPU está sobrecarregada.
    2. Se wa está alto, há um gargalo de I/O.
  2. Memória:
    1. Se free está baixo e si/so estão altos, há falta de memória física, causando troca excessiva (swap).
  3. Disco:
    1. Se bi e bo estão altos, há muita atividade de disco, indicando um possível gargalo de I/O.


segunda-feira, 16 de novembro de 2020

Níveis de Privilégios de banco de dados

Há três camadas concêntricas de privilégios do nível do Banco de Dados, Connect, Resource e DBA, que autoriza o aumento do poder sobre o acesso e controle do Banco de Dados. Apenas um usuário com o privilégio de DBA pode conceder ou revogar privilégios no nível do banco de dados. 

 
 
 
 
 
 
 
 
 
 
 
 
Por causa da organização hierárquica dos privilégios, se você revogar o privilégio RESOURCE ou CONNECT de um usuário com privilégio DBA, a declaração não terá efeito. Se você revogar o privilégio de DBA de um usuário, o usuário retém o privilégio CONNECT no Banco de Dados. Para negar o acesso ao Banco de Dados a um usuário com privilégio de DBA ou RESOURCE, você deve primeiro revogar o privilégio DBA ou RESOURCE e, em seguida, revogar o privilégio CONNECT em uma instrução REVOKE separada.
 
Da mesma forma, se você revogar o privilégio CONNECT de um usuário que possui o privilégio RESOURCE, a declaração não terá efeito. Se você revogar o privilégio de RESOURCE de um usuário, o usuário retém o privilégio CONNECT no Banco de Dados.
 
Somente usuários ou PUBLIC podem ter privilégios de nível de Banco de Dados. Você não pode revogar esses privilégios de uma role, porque uma role não pode conter privilégios de nível de Banco de Dados.
 
A tabela a seguir lista a palavra-chave para cada privilégio no nível do Banco de Dados.
 
 
Privilégios Efeitos
DBA
Tem todos os recursos do privilégio RESOURCE e pode executar as seguintes operações adicionais:
  • Conceda qualquer privilégio de nível de banco de dados, incluindo o privilégio de DBA, a outro usuário.
  • Conceda qualquer privilégio de nível de tabela a outro usuário ou a uma role.
  • Conceda uma role a um usuário ou a outra role.
  • Revogar um privilégio cujo concedente você especifica como revogador na cláusula AS da instrução REVOKE.
  • Restrinja o privilégio de execução aos DBAs ao registrar um UDR.
  • Execute a instrução SET SESSION AUTHORIZATION.
  • Crie qualquer objeto de banco de dados.
  • Crie tabelas, views e índices, designando outro usuário como proprietário desses objetos.
  • Altere, elimine ou renomeie objetos de banco de dados, independentemente de quem os possui.
  • Execute a opção DROP DISTRIBUTIONS da instrução UPDATE STATISTICS.
  • Execute as instruções DROP DATABASE e RENAME DATABASE.
RESOURCE
Permite estender a estrutura do banco de dados. Além dos recursos do privilégio CONNECT, o detentor do privilégio de RESOURCE pode realizar as seguintes operações:
 
  • Criar novas tabelas.
  • Criar novos indices.
  • Criar novas UDR’s.
  • Criar novos tipos de dados.
CONNECT
Se você possui esse privilégio, você pode consultar e modificar dados, e modifique o esquema do banco de dados se você possuir o objeto de banco de dados que deseja modificar. Um usuário com o privilégio Connect pode realizar as seguintes operações:
 
  • Conecte-se ao banco de dados com a instrução CONNECT ou outra instrução de conexão.
  • Execute as instruções SELECT, INSERT, UPDATE e DELETE, desde que o usuário tenha os privilégios de nível de tabela necessários.
  • Criar Views, desde que o usuário tenha o privilégio SELECT nas tabelas subjacentes.
  • Criar synonyms.
  • Criar tabelas temporarias, e criação de indices nas tabelas temporárias.
  • Aterar ou eliminar uma tabela ou um índice, se o usuario for o proprietaria dessa tabela ou indice.
  • Conceder privilégio em uma tabela, se o usuário for proprietario da tabela (ou recebeu privilégio na tabela com a palavra-chave WITH GRANT OPTION).
 
 Dica: Para determinar quais usuários têm privilégios de DBA em um banco de dados, execute esta consulta no DB-Access ou em seu aplicativo:
 

SELECT username,usertype FROM sysusers; 

A saída mostra os nomes de usuário (por exemplo, público e informix) seguidos por um dos seguintes códigos:
  • D = Privilégio de DBA
  • C = Privilégio de CONNECT
  • R = Privilégio de RESOURCE
 

quinta-feira, 21 de novembro de 2019

O IBM® Informix Primary Storage Manager gerencia o armazenamento para operações de backup restauração do ON-Bar, incluindo backups paralelos, que usam dispositivos de arquivo (discos).

IBM Informix Primary Storage Manager

IBM Informix Primary Storage Manager é um aplicativo que gerencia dispositivos de armazenamento usados para solicitações de backup e restauração emitidas pelo ON-Bar. O PSM suporta o processamento serial e paralelo para solicitações de backup e restauração.

O PSM consiste nos seguintes componentes:

onpsm

Utilitário de linha de comando que você pode usar para executar as seguintes tarefas:
  • Criar, modificar e remover dispositivos de armazenamento;
  • Definir e modificar os tamanhos máximos para dispositivos;
  • Mover informações de backup de um dispositivo para outro em um pool de dispositivos;
  • Determinar se volumes, objetos de armazenamento e dispositivos estão bloqueados ou ocupados;
  • Liberar volumes bloqueados, objetos de armazenamentos e dispositivos;
  • Verificar nomes e rótulos de volumes;

Biblioteca compartilhada XBSA

Uma versão exclusiva da biblioteca compartilhada da API X/Open Backup Services (XBSA) que o ON-BAR e o Informix Primary Storage Manager usam para se comunicar. Quando o ON-Bar armazena ou recupera dados armazenados em dispositivos de armazenamento, o gerenciador de armazenamento coordena a solicitação por meio da interface XBSA no nível do dispositivo. Você especifica o local da biblioteca compartilhada XBSA com o parâmetro de configuração BAR_BSALIB_PATH.

Tabelas de catálogo de armazenamento

Um conjunto de arquivos simples que rastreiam informações sobre todos os objetos, dispositivos e conjuntos de dispositivos de armazenamento. Esses arquivos são necessários para restaurar objetos de backup criados pelo PSM. Por padrão, esses arquivos são armazenados no diretório $INFORMIXDIR/etc/psm. Você pode usar o parâmetro de configuração PSM_CATALOG_PATH para especificar outro local para as tabelas do catálogo de armazenamento.

Importante

  • Faça backup das tabelas do catálogo de armazenamento com as ferramentas do sistema operacional como parte de uma estratégia de recuperação de desastre. O backup das tabelas do catálogo de armazenamento não são feitas com a instancia do banco de dados e não estão associados as tabelas do catálogo do sistema.
  • Para impedir que as tabelas do catálogo de armazenamento fiquem muito grandes, exclua regularmente gerações antigas de backups. Utilize o comando onsmsync para gerenciar políticas de expiração.

Os parâmetros de configuração que você usa para configurar o Informix Primary Storage Manager estão no arquivo onconfig. Você define e mantém dispositivos de armazenamento com o utilitário de linha de comando onpsm. Você pode configurar um dispositivo por vez ou gerar um arquivo de configuração de dispositivo para configurar vários dispositivos. Durante os backups, o Informix Primary Storage Manager seleciona um dispositivo de um conjunto de dispositivos disponíveis. Se o dispositivo ficar cheio ou falhar, o gerenciador de armazenamento altera automaticamente para outro dispositivo no mesmo pool.

O Informix Primary Storage Manager grava informações, mensagens de aviso e erros no log de atividades do gerenciador de armazenamento.  Você pode usar o parâmetro de configuração PSM_ACT_LOG para especificar o local do log de atividades. Se o parâmetro de configuração PSM_ACT_LOG não contiver informações, o gerenciador de armazenamento colocará as informações de atividades no diretório especificado com o parâmetro de configuração BAR_ACT_LOG.





Recursos do Informix Primary Storage Manager

Dispositivos de armazenamento para usar com o gerenciador de armazenamento

  • Apenas dispositivos de arquivos;
  • O gerenciador de armazenamento cria automaticamente um dispositivo padrão quando um catálogo é criado. O Dispositivo padrão é $INFORMIXDIR/backups;
  • Você pode remover o dispositivo padrão;

Tamanho da transferencia do buffer

  • Ilimitado;

Criptografia e compactação

  • Utiliza-se com os parâmetros BACKUP_FILTER, RESTORE_FILTER, FILTERS no ON-Bar ( O gerenciador de armazenamento não fornece criptografia ou compactação.)

Políticas de expiração do gerenciador de armazenamento

  • Nenhuma política de expiração.  (Você expira manualmente os objetos de backup do gerenciador de armazenamento com o utilitário onsmsync. Os comandos de expiração do objeto onsmsync removem objetos do gerenciador de armazenamento.)

Você pode executar uma restauração importada com o ON-Bar e o IPSM. Em uma restauração importada, você faz backup da instancia do Informix em uma máquina e restaura a instancia em uma maquina diferente. Use as opções de exportação e importação do comando onsmsync para exportar os objetos de backup do gerenciador de armazenamento na maquina de backup e importe-os para o gerenciador de armazenamento na máquina de restauração.

Backups em dispositivos Cloud e STDIO

Usando dispositivos STDIO para backup e restauração:
  • O PSM gravará/lerá um fluxo de dados em um utilitário externo ( por exemplo, sftp ou curl );
  • Operador para fornecer parâmetros para chamar o utilitário para operações de leitura/gravação/remoção;
  • A transferencia de dados para o programa de terceiros ocorrerá usando o STDIO, o PSM gravará na entrada padrão do utilitário e lerá sua saída padrão;
  • O operador não tem acesso direto ao fluxo de dados;
  • Para usar esse recurso, o operador deve criar um dispositivo PSM do tipo "STDIO";
  • Um dispositivo do tipo STDIO exigirá que você forneça o caminho para o programa a ser executado como o nome do dispositivo ( exemplo, /usr/bin/curl );
  • Além disso, você deve fornecer os argumentos para chamar o programa durante o backup, restauração e remoção;
  • Opcionalmente, você pode fornecer o tamanho máximo de um arquivo; se o backup for maior que esse tamanho, ele será dividido em partes;
A nova linha de comando é:

onpsm -D -add /usr/bin/sftp.sh -t STDIO  --stdio_warg "BACKUP @object_name1@.@object_part@" --stdio_rarg "RESTORE  @object_name1@.@object_part@" --stdio_darg "DELETE  @object_name1@.@object_part@" --max_part_size 

quarta-feira, 19 de junho de 2019

exit(n)

NAME
exit - Finaliza a aplicação 
SINOPSE
exit ?returnCode?
DESCRIÇÃO
Encerra o processo, retornando returnCode para o sistema como o status de saída. Se returnCode não for especificado, o valor padrão será 0.
EXEMPLO
Como os códigos de saída diferentes de zero são interpretados como erros pelo processo de chamadas, o comando exit é uma parte importante da sinalização de que algo fatal deu errado. Esse fragmento de código é útil em scripts para atuar como uma interceptação geral de problemas:
proc main {} { 
# ... coloque o código real aqui ...
 if {[catch {main} msg options]} {
       puts stderr "unexpected script error: $msg"
       if {[info exists env(DEBUG)]} {
            puts stderr "---- BEGIN TRACE ----"
            puts stderr "[dict get $options -errorinfo]
                      puts stderr "---- END TRACE ---"
                  }
 
 
 



Esse fragmento de código é útil em scripts para atuar como uma interceptação geral de problemas:
 
 

quinta-feira, 13 de junho de 2019

Comandos uteis para kvm (virsh)

Conectar uma console serial virtual para um convidado

entrar na vm guest e habilitar uma porta serial

# systemctl enable serial-getty@ttyS0

iniciar a serial

# systemctl start serial-getty@ttyS0

listar as maquinas virtuais convidadas

# virsh list

acessar a console do convidado

# virsh console 1 
ou 
# virsh console logixtst

após acessar teclar enter para o acesso

para sair , digitar exit e após digitar ctrl+]

Minhas considerações sobre essa console.... na minha opinião não serve de nada, pois a console na verdade é somente uma emulação, ele ate tentar emular um VT110, porem no lado do GUEST ele depende de um serviço de serial habilitado, que no meu entender não server para nada, pois ao rebotar uma maquina ele não corre as informações na tela como uma console mesmo ou ao iniciar um servidor ele também não mostra as informações na  tela, resumindo se precisar interagir com o boot da maquina, não conseguiremos , teremos que ir la no HOST e chamar a console real para interagir.

ainda acho mais vantagem nesse caso utilizar o SSH.

Forçar o desligamento de uma VM

# virsh destroy logixtst

Prove informações básicas sobre uma VM

# virsh dominfo logixtst

Mostra o estado de uma VM

# virsh domstate logixtst

Listar as VMs

# virsh list {--inactive | --all}

Pausar uma VM

# virsh suspend logixtst

Retomar a VM

# virsh resume logixtst

Descobrir o caminho da imagem do disco da VM

# virsh dumpxml logixtst | grep "source dev"

Criar uma VM através do arquivo de xml

# virsh dumpxml LogixTeste >  /etc/libvirt/qemu/ajm.xml

Editar o arquivo /etc/libvirt/qemu/ajm.xml e alterar a tag para o novo novo
exemplo:

LogixTeste para ajm

em seguida alterar a tag deixando-a em branco como no exemplo abaixo:

b4732438-0255-4390-9523-dc39dfb8348e (antes)

(depois)

após alteração executar o comando abaixo para criar o novo UUID da VM:

# virsh define ajm.xml

e finalmente criar a nova VM com o comando abaixo:

# virsh create ajm.xml