Complete Proxmox VE commands reference — 300 commands across 14 categories. Quick reference cheat sheet for Linux (Debian).
Proxmox VE is administered from the web UI most of the time, but everything the UI does is a command underneath, and those commands are what you need over SSH when the UI is unreachable or a task must be scripted. The table lists the subcommands of each tool — qm for VMs, pct for containers, pvesm for storage, pvecm for the cluster — with Proxmox's own one-line descriptions.
| Shortcut | Action |
|---|---|
| qm agent | An alias for qm guest cmd |
| qm cleanup | Cleans up resources like tap devices, vgpus, etc. Called after a vm shuts down, crashes, etc |
| qm clone | Create a copy of virtual machine/template |
| qm cloudinit dump | Get automatically generated cloudinit config |
| qm cloudinit pending | Get the cloudinit configuration with both current and pending values |
| qm cloudinit update | Regenerate and change cloudinit config drive |
| qm config | Get the virtual machine configuration with pending configuration changes applied. Set |
| qm create | Create or restore a virtual machine |
| qm delsnapshot | Delete a VM snapshot |
| qm destroy | Destroy the VM and all used/owned volumes. Removes any VM specific permissions and firewall |
| qm disk import | Import an external disk image as an unused disk in a VM. The image format has to be supported |
| qm disk move | Move volume to different storage or to a different VM |
| qm disk rescan | Rescan all storages and update disk sizes and unused disk images |
| qm disk resize | Extend volume size |
| qm disk unlink | Unlink/delete disk images |
| qm enroll-efi-keys | Enroll important updated certificates to the EFI disk with pre-enrolled-keys. Currently, these |
| qm guest cmd | Execute QEMU Guest Agent commands |
| qm guest exec | Executes the given command via the guest agent |
| qm guest exec-status | Gets the status of the given pid started by the guest-agent |
| qm guest passwd | Sets the password for the given user to the given password |
| qm help | Get help about specified command |
| qm import | Import a foreign virtual guest from a supported import source, such as an ESXi storage |
| qm importdisk | An alias for qm disk import |
| qm importovf | Create a new VM using parameters read from an OVF manifest |
| qm list | Virtual machine index (per node) |
| qm listsnapshot | List all snapshots |
| qm migrate | Migrate virtual machine. Creates a new migration task |
| qm monitor | Enter QEMU Monitor interface |
| qm move-disk | An alias for qm disk move |
| qm | An alias for qm disk move |
| qm mtunnel | Used by qmigrate - do not use manually |
| qm nbdstop | Stop embedded nbd server |
| qm pending | Get the virtual machine configuration with both current and pending values |
| qm reboot | Reboot the VM by shutting it down, and starting it again. Applies pending changes |
| qm remote-migrate | Migrate virtual machine to a remote cluster. Creates a new migration task. EXPERIMENTAL |
| qm rescan | An alias for qm disk rescan |
| qm reset | Reset virtual machine |
| qm resize | An alias for qm disk resize |
| qm resume | Resume virtual machine |
| qm rollback | Rollback VM state to specified snapshot |
| qm sendkey | Send key event to virtual machine |
| qm set | Set virtual machine options (synchronous API) - You should consider using the POST method |
| qm showcmd | Show command line which is used to start the VM (debug info) |
| qm shutdown | Shutdown virtual machine. This is similar to pressing the power button on a physical machine. |
| qm snapshot | Snapshot a VM |
| qm start | Start virtual machine |
| qm status | Show VM status |
| qm stop | Stop virtual machine. The qemu process will exit immediately. This is akin to pulling the power |
| qm suspend | Suspend virtual machine |
| qm template | Create a Template |
| qm terminal | Open a terminal using a serial device |
| qm unlink | An alias for qm disk unlink |
| qm unlock | Unlock the VM |
| qm vncproxy | Proxy VM VNC traffic to stdin/stdout |
| qm wait | Wait until the VM is stopped |
| Shortcut | Action |
|---|---|
| pct clone | Create a container clone/copy |
| pct config | Get container configuration |
| pct console | Launch a console for the specified container |
| pct cpusets | Print the list of assigned CPU sets |
| pct create | Create or restore a container |
| pct delsnapshot | Delete a LXC snapshot |
| pct destroy | Destroy the container (also delete all uses files) |
| pct df | Get the container's current disk usage |
| pct enter | Launch a shell for the specified container |
| pct exec | Launch a command inside the specified container |
| pct fsck | Run a filesystem check (fsck) on a container volume |
| pct fstrim | Run fstrim on a chosen CT and its mountpoints, except bind or read-only mountpoints |
| pct help | Get help about specified command |
| pct list | LXC container index (per node) |
| pct listsnapshot | List all snapshots |
| pct migrate | Migrate the container to another node. Creates a new migration task |
| pct mount | Mount the container's filesystem on the host. This will hold a lock on the container |
| pct move-volume | Move a rootfs-/mp-volume to a different storage or to a different container |
| pct | An alias for pct move-volume |
| pct pending | Get container configuration, including pending changes |
| pct pull | Copy a file from the container to the local system |
| pct push | Copy a local file to the container |
| pct reboot | Reboot the container by shutting it down, and starting it again. Applies pending changes |
| pct remote-migrate | Migrate container to a remote cluster. Creates a new migration task. EXPERIMENTAL feature! |
| pct rescan | Rescan all storages and update disk sizes and unused disk images |
| pct resize | Resize a container mount point |
| pct restore | Create or restore a container |
| pct resume | Resume the container |
| pct rollback | Rollback LXC state to specified snapshot |
| pct set | Set container options |
| pct shutdown | Shutdown the container. This will trigger a clean shutdown of the container, see lxc-stop(1) |
| pct snapshot | Snapshot a container |
| pct start | Start the container |
| pct status | Show CT status |
| pct stop | Stop the container. This will abruptly stop all processes running in the container |
| pct suspend | Suspend the container. This is experimental |
| pct template | Create a Template |
| pct unlock | Unlock the VM |
| pct unmount | Unmount the container's filesystem |
| Shortcut | Action |
|---|---|
| pvesm add | Create a new storage |
| pvesm alloc | Allocate disk images |
| pvesm apiinfo | Returns APIVER and APIAGE |
| pvesm cifsscan | An alias for pvesm scan cifs |
| pvesm export | Used internally to export a volume |
| pvesm extractconfig | Extract configuration from vzdump backup archive |
| pvesm free | Delete volume |
| pvesm help | Get help about specified command |
| pvesm import | Used internally to import a volume |
| pvesm iscsiscan | An alias for pvesm scan iscsi |
| pvesm list | List storage content |
| pvesm lvmscan | An alias for pvesm scan lvm |
| pvesm lvmthinscan | An alias for pvesm scan lvmthin |
| pvesm nfsscan | An alias for pvesm scan nfs |
| pvesm path | Get filesystem path for specified volume |
| pvesm prune-backups | Prune backups. Only those using the standard naming scheme are considered. If no keep options |
| pvesm remove | Delete storage configuration |
| pvesm scan cifs | Scan remote CIFS server |
| pvesm scan iscsi | Scan remote iSCSI server |
| pvesm scan lvm | List local LVM volume groups |
| pvesm scan lvmthin | List local LVM Thin Pools |
| pvesm scan nfs | Scan remote NFS server |
| pvesm scan pbs | Scan remote Proxmox Backup Server |
| pvesm scan zfs | Scan zfs pool list on local node |
| pvesm set | Update storage configuration |
| pvesm status | Get status for all datastores |
| pvesm zfsscan | An alias for pvesm scan zfs |
| Shortcut | Action |
|---|---|
| pvecm add | Adds the current node to an existing cluster |
| pvecm addnode | Adds a node to the cluster configuration. This call is for internal use |
| pvecm apiver | Return the version of the cluster join API available on this node |
| pvecm create | Generate new cluster configuration. If no links given, default to local IP address as link0 |
| pvecm delnode | Removes a node from the cluster configuration |
| pvecm expected | Tells corosync a new value of expected votes |
| pvecm help | Get help about specified command |
| pvecm keygen | Generate new cryptographic key for corosync |
| pvecm mtunnel | Used by VM/CT migration - do not use manually |
| pvecm nodes | Displays the local view of the cluster nodes |
| pvecm qdevice remove | Remove a configured QDevice |
| pvecm qdevice setup | Setup the use of a QDevice |
| pvecm status | Displays the local view of the cluster status |
| pvecm updatecerts | Update node certificates (and generate all needed files/directories) |
| Shortcut | Action |
|---|---|
| pveceph createmgr | An alias for pveceph mgr create |
| pveceph createmon | An alias for pveceph mon create |
| pveceph createosd | An alias for pveceph osd create |
| pveceph createpool | An alias for pveceph pool create |
| pveceph destroymgr | An alias for pveceph mgr destroy |
| pveceph destroymon | An alias for pveceph mon destroy |
| pveceph destroyosd | An alias for pveceph osd destroy |
| pveceph destroypool | An alias for pveceph pool destroy |
| pveceph fs create | Create a Ceph filesystem |
| pveceph fs destroy | Destroy a Ceph filesystem. Refuses if any PVE storage entry of type cephfs still references |
| pveceph help | Get help about specified command |
| pveceph init | Create the initial Ceph default configuration and set up symlinks. Idempotent on re-call: if |
| pveceph install | Install ceph related packages |
| pveceph lspools | An alias for pveceph pool ls |
| pveceph mds create | Create Ceph Metadata Server (MDS) |
| pveceph mds destroy | Destroy Ceph Metadata Server |
| pveceph mgr create | Create Ceph Manager |
| pveceph mgr destroy | Destroy Ceph Manager |
| pveceph mon create | Create a Ceph Monitor. Also auto-creates a Manager for the first monitor |
| pveceph mon destroy | Destroy a Ceph Monitor. Refuses to remove the last monitor of the cluster. Does not destroy any |
| pveceph osd create | Create OSD |
| pveceph osd destroy | Destroy OSD |
| pveceph osd details | Get OSD details |
| pveceph pool create | Create Ceph pool |
| pveceph pool destroy | Destroy pool |
| pveceph pool get | Show the current pool status |
| pveceph pool ls | List all pools and their settings (which are settable by the POST/PUT endpoints) |
| pveceph pool set | Change POOL settings |
| pveceph purge | Destroy ceph related data and configuration files |
| pveceph start | Start ceph services |
| pveceph status | Get Ceph Status |
| pveceph stop | Stop ceph services |
| Shortcut | Action |
|---|---|
| pvesh create | Call API POST on <api_path> |
| pvesh delete | Call API DELETE on <api_path> |
| pvesh get | Call API GET on <api_path> |
| pvesh help | Get help about specified command |
| pvesh ls | List child objects on <api_path> |
| pvesh set | Call API PUT on <api_path> |
| pvesh usage | print API usage information for <api_path> |
| Shortcut | Action |
|---|---|
| pveum acl delete | Update Access Control List (add or remove permissions) |
| pveum acl list | Get Access Control List (ACLs) |
| pveum acl modify | Update Access Control List (add or remove permissions) |
| pveum acldel | An alias for pveum acl delete |
| pveum aclmod | An alias for pveum acl modify |
| pveum group add | Create new group |
| pveum group delete | Delete group |
| pveum group list | Group index |
| pveum group modify | Update group data |
| pveum groupadd | An alias for pveum group add |
| pveum groupdel | An alias for pveum group delete |
| pveum groupmod | An alias for pveum group modify |
| pveum help | Get help about specified command |
| pveum passwd | Change user password |
| pveum pool add | Create new pool |
| pveum pool delete | Delete pool |
| pveum pool list | List pools or get pool configuration |
| pveum pool modify | Update pool |
| pveum realm add | Add an authentication server |
| pveum realm delete | Delete an authentication server |
| pveum realm list | Authentication domain index |
| pveum realm modify | Update authentication server settings |
| pveum realm sync | Syncs users and/or groups from the configured LDAP to user.cfg. NOTE: Synced groups will have |
| pveum role add | Create new role |
| pveum role delete | Delete role |
| pveum role list | Role index |
| pveum role modify | Update an existing role |
| pveum roleadd | An alias for pveum role add |
| pveum roledel | An alias for pveum role delete |
| pveum rolemod | An alias for pveum role modify |
| pveum ticket | Create or verify authentication ticket |
| pveum user add | Create new user |
| pveum user delete | Delete user |
| pveum user list | User index |
| pveum user modify | Update user configuration |
| pveum user permissions | Retrieve effective permissions of given user/token |
| pveum user tfa delete | Delete TFA entries from a user |
| pveum user tfa list | List TFA entries |
| pveum user tfa unlock | Unlock a user's TFA authentication |
| pveum user token add | Generate a new API token for a specific user. NOTE: returns API token value, which needs to be |
| pveum user token delete | Remove API token for a specific user |
| pveum user token list | Get user API tokens |
| pveum user token modify | Update API token for a specific user. NOTE: when regenerate is set, the returned token value |
| pveum user token permissions | Retrieve effective permissions of given token |
| pveum user token remove | An alias for pveum user token delete |
| pveum useradd | An alias for pveum user add |
| pveum userdel | An alias for pveum user delete |
| pveum usermod | An alias for pveum user modify |
| Shortcut | Action |
|---|---|
| pvenode acme account deactivate | Deactivate existing ACME account at CA |
| pvenode acme account info | Return existing ACME account information |
| pvenode acme account list | ACMEAccount index |
| pvenode acme account register | Register a new ACME account with a compatible CA |
| pvenode acme account update | Update existing ACME account information with CA. Note: not specifying any new account |
| pvenode acme cert order | Order a new certificate from ACME-compatible CA |
| pvenode acme cert renew | Renew existing certificate from CA |
| pvenode acme cert revoke | Revoke existing certificate from CA |
| pvenode acme plugin add | Add ACME plugin configuration |
| pvenode acme plugin config | Get ACME plugin configuration |
| pvenode acme plugin list | ACME plugin index |
| pvenode acme plugin remove | Delete ACME plugin configuration |
| pvenode acme plugin set | Update ACME plugin configuration |
| pvenode cert delete | DELETE custom certificate chain and key |
| pvenode cert info | Get information about node's certificates |
| pvenode cert set | Upload or update custom certificate chain and key |
| pvenode config get | Get node configuration options |
| pvenode config set | Set node configuration options |
| pvenode help | Get help about specified command |
| pvenode migrateall | Migrate all VMs and Containers |
| pvenode startall | Start all VMs and containers located on this node (by default only those with onboot=1) |
| pvenode stopall | Stop all VMs and Containers |
| pvenode task list | Read task list for one node (finished tasks) |
| pvenode task log | Read task log |
| pvenode task status | Read task status |
| pvenode wakeonlan | Try to wake a node via wake on LAN network packet |
| Shortcut | Action |
|---|---|
| ha-manager add | Create a new HA resource |
| ha-manager config | List HA resources |
| ha-manager crm-command arm-ha | Request re-arming the HA stack after it was disarmed |
| ha-manager crm-command disarm-ha | Request disarming the HA stack, releasing all watchdogs cluster-wide |
| ha-manager crm-command migrate | Request resource migration (online) to another node |
| ha-manager crm-command node-maintenance disable | Change the node-maintenance request state |
| ha-manager crm-command node-maintenance enable | Change the node-maintenance request state |
| ha-manager crm-command relocate | Request resource relocation to another node. This stops the service on the old node |
| ha-manager crm-command stop | Request the service to be stopped |
| ha-manager groupadd | Create a new HA group. (deprecated in favor of HA rules) |
| ha-manager groupconfig | Get HA groups. (deprecated in favor of HA rules) |
| ha-manager groupremove | Delete ha group configuration. (deprecated in favor of HA rules) |
| ha-manager groupset | Update ha group configuration. (deprecated in favor of HA rules) |
| ha-manager help | Get help about specified command |
| ha-manager migrate | An alias for ha-manager crm-command migrate |
| ha-manager relocate | An alias for ha-manager crm-command relocate |
| ha-manager remove | Delete resource configuration |
| ha-manager rules add | Create HA rule |
| ha-manager rules config | Get HA rules |
| ha-manager rules list | Get HA rules |
| ha-manager rules remove | Delete HA rule |
| ha-manager rules set | Update HA rule |
| ha-manager set | Update resource configuration |
| ha-manager status | Display HA manager status |
| Shortcut | Action |
|---|---|
| pvesr create-local-job | Create a new replication job |
| pvesr delete | Mark replication job for removal |
| pvesr disable | Disable a replication job |
| pvesr enable | Enable a replication job |
| pvesr finalize-local-job | Finalize a replication job. This removes all replications snapshots with timestamps different |
| pvesr help | Get help about specified command |
| pvesr list | List replication jobs |
| pvesr prepare-local-job | Prepare for starting a replication job. This is called on the target node before replication |
| pvesr read | Read replication job configuration |
| pvesr run | This method is called by the systemd-timer and executes all (or a specific) sync jobs |
| pvesr schedule-now | Schedule replication job to start as soon as possible |
| pvesr set-state | Set the job replication state on migration. This call is for internal use. It will accept |
| pvesr status | List status of all replication jobs on this node |
| pvesr update | Update replication job configuration |
| Shortcut | Action |
|---|---|
| pveam available | List available templates |
| pveam download | Download appliance templates |
| pveam help | Get help about specified command |
| pveam list | Get list of all templates on storage |
| pveam remove | Remove a template |
| pveam update | Update Container Template Database |
| Shortcut | Action |
|---|---|
| vzdump | Create backup |
| Shortcut | Action |
|---|---|
| pvesubscription delete | Delete subscription key of this node |
| pvesubscription get | Read subscription info |
| pvesubscription help | Get help about specified command |
| pvesubscription set | Set subscription key |
| pvesubscription set-offline-key | Internal use only! To set an offline key, use the package proxmox-offline-mirror-helper instead |
| pvesubscription update | Update subscription info |
| Shortcut | Action |
|---|---|
| qmrestore | Restore QemuServer vzdump backups |
qm create and pct create make a VM or container from flags or restore one from a backup; qm clone and pct clone copy an existing one, including from a template. qm config and pct config print the configuration as key=value lines, which is faster than clicking through the UI tabs. qm guest exec runs a command inside a VM through the guest agent, and pct enter or pct exec does the same for a container without needing SSH into it. qm destroy and pct destroy delete the guest and its disks, so the ID is worth double-checking.
pvesm status shows every storage with used and free space, and pvesm list shows the volumes on one. qm disk import brings an external image (qcow2, vmdk, raw) in as an unused disk, and qm disk resize grows a disk in place; qm disk move and pct move-volume shift a disk to different storage while the guest keeps running. pvesm prune-backups applies retention rules to vzdump archives, and vzdump itself creates backups from the command line with the same options as scheduled jobs.
pvecm status and pvecm nodes show quorum and membership — the first commands to run when a node shows a grey question mark in the UI — and pvecm expected lets a single surviving node regain quorum in an emergency. pct migrate moves a container between nodes; VMs migrate through the UI or qm migrate. ha-manager status shows HA resource state and ha-manager add puts a guest under HA. pvesh get calls any API path from the shell, which is how you discover what the UI is doing and script it. pveam available and pveam download fetch container templates.
qm manages QEMU virtual machines; pct manages LXC containers. Most subcommands exist in both with the same names.
qm guest exec <vmid> -- command, which needs the QEMU guest agent installed and enabled in the VM.
Run pvecm status on a working node to see quorum and membership, then check the corosync and pve-cluster services on the affected node.
Copy the image to the host and run qm disk import <vmid> image storage, then attach the resulting unused disk in the VM hardware settings.
Open your assistant with this page preloaded as the source — great for follow-up questions like "which of these work in other apps?"