virsh – manage virtual machines with libvirt

virsh is the command-line interface for managing virtual machines through libvirt (KVM, QEMU, Xen).
Synopsis
virsh [OPTIONS] COMMAND [ARGS]
Common Commands
| Command | Description |
|---|---|
list | List VMs |
start | Start VM |
shutdown | Graceful shutdown |
destroy | Force stop |
reboot | Reboot VM |
console | Connect to console |
define | Create VM from XML |
undefine | Remove VM definition |
Examples
List running VMs
$ virsh list
Id Name State
--------------------------
1 webserver running
2 database running
List all VMs (including stopped)
$ virsh list --all
Start/stop VM
$ virsh start webserver
$ virsh shutdown webserver
$ virsh destroy webserver # Force stop
Connect to console
$ virsh console webserver
# Ctrl+] to exit
VM info
$ virsh dominfo webserver
$ virsh domblklist webserver # Disk info
$ virsh domiflist webserver # Network info
Snapshots
$ virsh snapshot-create-as webserver snap1
$ virsh snapshot-list webserver
$ virsh snapshot-revert webserver snap1
VM Management
Create VM from XML
$ virsh define /path/to/vm.xml
$ virsh start vmname
Clone VM
$ virt-clone --original webserver --name webserver-clone --auto-clone
Delete VM
$ virsh destroy webserver
$ virsh undefine webserver --remove-all-storage
Tips
- virt-manager: GUI alternative for easier management
- Need libvirtd: Service must be running
- User permissions: Add user to
libvirtgroup - Console escape: Ctrl+] to exit console
See Also
Related Commands
- virt-manager — GUI for VMs
- qemu — Low-level VM tool






