A GTK interface for live process migration with CRIU.
This program displays control groups on any number of remote machines in a tree format. The user can migrate a process from one machine to another by simply dragging and dropping it into a another tree.
- Python 2 or 3
- GTK+ 3.10 or newer
- Paramiko (
pip install paramiko
) - CRIU and a kernel new enough for CRIU to run on (on the remote machines)
Run python -m criugui
to start the program.
To add a new machine, use the "+" button and fill out the dialog. SSH will be used to connect to the machine, so a special server is not needed, but you must be able to log in as root.
The tree under each machine displays the hierarchy of control groups on the system, and a process tree is shown within each control group. If a new process is started or an existing one terminates, you can reload the processes with the refresh button. To search for a process by name, just begin typing.
To migrate a process, click and drag it from one machine to another. You will be informed of the success or failure of the migration when it completes.
The command line options passed to CRIU default to basically --leave-running --manage-cgroups
for dumping
and -restore-detached --manage-cgroups
for restoring. To edit these, click the terminal button in the
headerbar.
Shell jobs cannot be migrated. If the --shell-job
flag is specified, CRIU checks if stdin is actually
a TTY, and returns an error if it's not. I'm not sure if shell jobs can be migrated besides manually in
an interactive terminal.