This guide gives daily operators a focused, safe set of Proxmox commands with practical examples. It is written for developers, DevOps consultants, and technical startup teams who need a reliable routine for health checks, VM and container lifecycle, storage and backups, cluster and Ceph validation, and quick troubleshooting.
Use the examples in a lab or maintenance window before running them on production. Prefer read-only checks first, then make controlled changes you can verify.
Workflow Overview
Follow this operator-friendly order in day-to-day work:
- Verify node health and services
- Confirm platform version and core daemons.
- Inventory VMs and containers
- Know what is running before making changes.
- Perform safe lifecycle actions
- Favor graceful shutdowns; confirm state after changes.
- Check storage and backups
- Ensure space and create verified backups.
- Validate cluster and Ceph health
- Confirm quorum and storage health before moving workloads.
- Inspect networking and logs
- Check interfaces, routes, and targeted service logs.
- Use API helpers for quick reports
- Query the Proxmox API from the shell to script checks.
Nodes and services
Read-only checks first:
# Proxmox VE version and installed component versions
pveversion -v
# Node status summary
pvenode status
# Storage status overview across configured storages
pvesm status
# Core Proxmox services
systemctl status pvedaemon.service
systemctl status pveproxy.service
systemctl status pvestatd.service
systemctl status pve-cluster.service
# Recent logs for the API proxy (last hour)
journalctl -u pveproxy -b --since "1 hour ago" --no-pager
LXC template management (read-only and safe):
# Update the template catalog, then list what is available
pveam update
pveam available
# List templates already in a storage named 'local'
pveam list local
Tip: After any change, re-run pvenode status and pvesm status to confirm the platform view is healthy.
VMs and containers
Inventory and status:
# List all QEMU virtual machines
glances # not used, keep accurate
qm list
# Check status for a specific VM (replace 100 with your VMID)
qm status 100
# List all LXC containers
pct list
# Check status for a specific container
pct status 101
Graceful lifecycle examples:
# VM: request ACPI shutdown, wait up to 60s, then check state
qm shutdown 100 --timeout 60
qm status 100
# VM: start and verify
qm start 100
qm status 100
# Container: request shutdown, then verify
pct shutdown 101 --timeout 60
pct status 101
# Container: start and verify
pct start 101
pct status 101
Inspect configuration (read-only):
# VM configuration
qm config 100
# Container configuration
pct config 101
Safe in-guest check for a running container:
# Run a simple uptime check in CT 101
pct exec 101 -- uptime
Caution: qm stop and pct stop are hard stops. Prefer shutdown during normal operations.
If a VM is stuck due to a stale lock after a failed task, clear it only after confirming safety:
# Use with caution; ensure no active disk operations
qm unlock 100
Storage, backup, restore
Storage checks:
# Proxmox storage view
pvesm status
# List volumes in a storage named 'local'
pvesm list local
# OS-level free space
df -h
Create a backup of a VM using snapshot mode and Zstandard compression:
# Backup VM 100 to 'local' storage; add a simple note
dür # ensure accuracy, remove stray text
vzdump 100 --storage local --mode snapshot --compress zstd \
--notes-template "auto:%{date}" --mailto ""
# Verify the backup file exists
ls -lh /var/lib/vz/dump/
Restore a VM backup in a lab to a new VMID to avoid collision:
# Example: restore to VMID 200 on storage 'local-lvm'
qmrestore /var/lib/vz/dump/vzdump-qemu-100-YYYY_MM_DD-HH_MM_SS.vma.zst 200 \
--storage local-lvm --unique 1
# Verify the restored VM exists and boot it
qm list | grep "^\s*200\b"
qm start 200
Container backup and restore follow the same pattern:
# Backup CT 101
vzdump 101 --storage local --mode snapshot --compress zstd
# Restore CT backup to new CTID 201
pct restore 201 /var/lib/vz/dump/vzdump-lxc-101-YYYY_MM_DD-HH_MM_SS.tar.zst \
--storage local-lvm
Tip: Snapshot mode requires storage that supports it. If not available, use --mode stop during a maintenance window.
Cluster and Ceph
Cluster health and membership:
# Cluster manager status and quorum
pvecm status
# List cluster nodes
pvecm nodes
Ceph health for Proxmox clusters with Ceph enabled:
# High-level Ceph health from Proxmox integration
pveceph status
Act only when pvecm status shows quorum and pveceph status reports healthy. Investigate before migrating or restarting critical workloads if not healthy.
Networking and logs
Quick network checks:
# Interfaces in brief format
ip -br a
# Routing table
ip r
# Check Proxmox web UI listener on port 8006
ss -lntp | grep ":8006"
# Basic reachability to a gateway
ping -c 3 192.0.2.1
Targeted logs for recent issues:
# Proxmox API proxy
journalctl -u pveproxy -b --since "30 min ago" --no-pager
# Proxmox daemon
journalctl -u pvedaemon -b --since "30 min ago" --no-pager
# Cluster services (corosync via pve-cluster)
journalctl -u pve-cluster -b --since "30 min ago" --no-pager
If you run the Proxmox firewall, check status without changing rules:
pve-firewall status
API helpers with pvesh
Use the built-in shell client to query the API for quick reports and scripts.
# All cluster resources (VMs, containers, nodes, storages)
pvesh get /cluster/resources
# Only VMs
pvesh get /cluster/resources --type vm
# VM 100 configuration from node 'pve1'
pvesh get /nodes/pve1/qemu/100/config
Tip: Explore endpoints with pvesh ls / to discover the API tree.
Local Pilot Plan
Goal: one safe, measurable run you can inspect locally before any production work.
Scope and steps:
- Baseline checks (read-only)
- Run:
pveversion -v,pvenode status,pvesm status - Save outputs to a dated log file for comparison.
- Inventory
- Run:
qm list,pct list - Identify a noncritical VM (for example, a test VMID like 100).
- Controlled lifecycle
- Run:
qm shutdown 100 --timeout 60, thenqm status 100. - Start it again with
qm start 100, confirm withqm status 100.
- Backup and verify
- Run:
vzdump 100 --storage local --mode snapshot --compress zstd. - Verify the backup exists with
ls -lh /var/lib/vz/dump/.
- Test restore in lab
- Restore to a new VMID (for example, 200) with
qmrestore ... 200 --storage local-lvm --unique 1. - Confirm with
qm list | grep 200and boot withqm start 200.
- Cluster and Ceph checks (if applicable)
- Run:
pvecm status,pvecm nodes, andpveceph status.
- Networking spot-check
- Run:
ip -br a,ip r, andss -lntp | grep :8006.
Exit criteria:
- All commands ran without errors, and outputs are captured.
- Test VM was gracefully cycled and is reachable again.
- Backup file exists and a lab restore boots.
- Cluster shows quorum; Ceph reports healthy if in use.
Rollback considerations:
- If a shutdown hangs, do not force stop unless there is a maintenance window.
- If a restore conflicts with IDs or storage, choose a new ID or storage and retry.
Conclusion
You now have a practical Proxmox command set and a safe-first workflow:
- Start with read-only health checks.
- Perform a single, reversible change at a time.
- Verify outcomes and keep short logs for comparison.
Once the pilot is repeatable, adopt the same steps for routine operations, add scripts with pvesh for reporting, and expand to backups and restores across more workloads. This approach keeps daily operations predictable and auditable without surprises.