1CRIU(8)                           CRIU Manual                          CRIU(8)
2
3
4

NAME

6       criu - checkpoint/restore in userspace
7

SYNOPSIS

9       criu command [option ...]
10

DESCRIPTION

12       criu is a tool for checkpointing and restoring running applications. It
13       does this by saving their state as a collection of files (see the  dump
14       command)  and  creating  equivalent processes from those files (see the
15       restore command). The restore operation can be  performed  at  a  later
16       time, on a different system, or both.
17

OPTIONS

19       Most  of  the  long flags can be prefixed with no- to negate the option
20       (example: --display-stats and --no-display-stats).
21
22   Common options
23       Common options are applicable to any command.
24
25       -v[v...], --verbosity
26           Increase verbosity up from the default  level.  In  case  of  short
27           option, multiple v can be used, each increasing verbosity by one.
28
29       -vnum, --verbosity=num
30           Set  verbosity  level to num. The higher the level, the more output
31           is produced.
32
33           The following levels are available:
34
35           ·   -v0 no output;
36
37           ·   -v1 only errors;
38
39           ·   -v2 above plus warnings (this is the default level);
40
41           ·   -v3 above plus information messages and timestamps;
42
43           ·   -v4 above plus lots of debug.
44
45       --config file
46           Pass a specific configuration file to criu.
47
48       --no-default-config
49           Disable parsing of default configuration files.
50
51       --pidfile file
52           Write root task, service or page-server pid into a file.
53
54       -o, --log-file file
55           Write logging messages to a file.
56
57       --display-stats
58           During dump, as well as during restore, criu collects some  statis‐
59           tics, like the time required to dump or restore the process, or the
60           number of pages dumped or  restored.  This  information  is  always
61           saved  to  the stats-dump and stats-restore files, and can be shown
62           using crit(1). The option --display-stats prints out this  informa‐
63           tion on the console at the end of a dump or restore operation.
64
65       -D, --images-dir path
66           Use path as a base directory where to look for sets of image files.
67
68       --prev-images-dir path
69           Use  path  as  a  parent  directory where to look for sets of image
70           files. This option makes sense in case of incremental dumps.
71
72       -W, --work-dir dir
73           Use directory dir for putting logs, pidfiles and statistics. If not
74           specified, path from -D option is taken.
75
76       --close fd
77           Close file descriptor fd before performing any actions.
78
79       -L, --libdir path
80           Path to plugins directory.
81
82       --enable-fs [fs[,fs...]]
83           Specify  a  comma-separated list of filesystem names that should be
84           auto-detected.  The  value  all  enables  auto-detection  for   all
85           filesystems.
86
87           Note: This option is not safe, use at your own risk. Auto-detecting
88           a filesystem mount assumes that the mountpoint can be restored with
89           mount(src, mountpoint, flags, options). When used, dump is expected
90           to always succeed if a mountpoint is to be  auto-detected,  however
91           restore  may  fail  (or  do  something wrong) if the assumption for
92           restore logic is incorrect. This  option  is  not  compatable  with
93           --external dev.
94
95       --action-script script
96           Add an external action script to be executed at certain stages. The
97           environment variable  CRTOOLS_SCRIPT_ACTION  is  available  to  the
98           script  to  find  out which action is being executed, and its value
99           can be one of the following:
100
101           pre-dump
102               run prior to beginning a dump
103
104           post-dump
105               run upon dump completion
106
107           pre-restore
108               run prior to beginning a restore
109
110           post-restore
111               run upon restore completion
112
113           pre-resume
114               run when all processes and resources are restored but tasks are
115               stopped waiting for final kick to run. Must not fail.
116
117           post-resume
118               called  at  the  very end, when everything is restored and pro‐
119               cesses were resumed
120
121           network-lock
122               run to lock network in a target network namespace
123
124           network-unlock
125               run to unlock network in a target network namespace
126
127           setup-namespaces
128               run once root task has just been created with  required  names‐
129               paces.  Note  it  is an early stage of restore, when nothing is
130               restored yet, except for namespaces themselves
131
132           post-setup-namespaces
133               called after the namespaces are configured
134
135           orphan-pts-master
136               called after master pty is opened and unlocked. This  hook  can
137               be used only in the RPC mode, and the notification message con‐
138               tains a file descriptor for the master pty
139
140       -V, --version
141           Print program version and exit.
142
143       -h, --help
144           Print some help and exit.
145
146   pre-dump
147       Performs the pre-dump procedure, during which criu creates  a  snapshot
148       of  memory  changes  since the previous pre-dump. Note that during this
149       criu also creates the fsnotify cache which speeds up the restore proce‐
150       dure.  pre-dump  requires at least -t option (see dump below). In addi‐
151       tion, page-server options may be specified.
152
153       --track-mem
154           Turn on memory changes tracker in the kernel. If the option is  not
155           passed the memory tracker get turned on implicitly.
156
157       --pre-dump-mode=mode
158           There  are  two mode to operate pre-dump algorithm. The splice mode
159           is parasite based, whereas read mode is based  on  process_vm_readv
160           syscall.  The read mode incurs reduced frozen time and reduced mem‐
161           ory pressure as compared to splice mode. Default is splice mode.
162
163   dump
164       Performs a checkpoint procedure.
165
166       -t, --tree pid
167           Checkpoint the whole process tree starting from pid.
168
169       -R, --leave-running
170           Leave tasks in running state after checkpoint, instead of  killing.
171           This  option  is  pretty  dangerous  and should be used only if you
172           understand what you are doing.
173
174           Note if task is about to run after been checkpointed, it can modify
175           TCP  connections,  delete  files  and  do  other dangerous actions.
176           Therefore, criu can not guarantee that the next restore action will
177           succeed. Most likely if this option is used, at least the file sys‐
178           tem snapshot must be made with the help of post-dump action script.
179
180           In other words, do not use it unless really needed.
181
182       -s, --leave-stopped
183           Leave tasks in stopped state after checkpoint, instead of killing.
184
185       --external type[id]:value
186           Dump an instance of an external resource.  The  generic  syntax  is
187           type  of  resource,  followed  by  resource id (enclosed in literal
188           square brackets),  and  optional  value  (prepended  by  a  literal
189           colon).  The following resource types are currently supported: mnt,
190           dev, file, tty, unix. Syntax  depends  on  type.  Note  to  restore
191           external  resources,  either  --external  or  --inherit-fd is used,
192           depending on resource type.
193
194       --external mnt[mountpoint]:name
195           Dump an external bind mount referenced by mountpoint, saving it  to
196           image under the identifier name.
197
198       --external mnt[]:flags
199           Dump  all external bind mounts, autodetecting those. Optional flags
200           can contain m to also dump external master mounts, s to  also  dump
201           external  shared  mounts  (default  behavior is to abort dumping if
202           such mounts are  found).  If  flags  are  not  provided,  colon  is
203           optional.
204
205       --external dev[major/minor]:name
206           Allow to dump a mount namespace having a real block device mounted.
207           A block device is identified by its major and  minor  numbers,  and
208           criu saves its information to image under the identifier name.
209
210       --external file[mnt_id:inode]
211           Dump  an  external  file,  i.e.  an  opened file that is can not be
212           resolved from the current mount namespace, which can not be  dumped
213           without  using  this  option.  The  file is identified by mnt_id (a
214           field obtained from /proc/pid/fdinfo/N) and inode (as  returned  by
215           stat(2)).
216
217       --external tty[rdev:dev]
218           Dump  an  external  TTY,  identified  by  st_rdev and st_dev fields
219           returned by stat(2).
220
221       --external unix[id]
222           Tell criu that one end of a pair of UNIX sockets (created by  sock‐
223           etpair(2)) with the given id is OK to be disconnected.
224
225       --freeze-cgroup
226           Use cgroup freezer to collect processes.
227
228       --manage-cgroups
229           Collect  cgroups  into  the image thus they gonna be restored then.
230           Without this option, criu will not save cgroups configuration asso‐
231           ciated with a task.
232
233       --cgroup-props spec
234           Specify controllers and their properties to be saved into the image
235           file.  criu predefines specifications for common  controllers,  but
236           since  the  kernel can add new controllers and modify their proper‐
237           ties, there should be a way to specify ones matched the kernel.
238
239           spec argument describes the controller and properties specification
240           in a simplified YAML form:
241
242               "c1":
243                - "strategy": "merge"
244                - "properties": ["a", "b"]
245               "c2":
246                - "strategy": "replace"
247                - "properties": ["c", "d"]
248
249           where  c1  and  c2  are controllers names, and a, b, c, d are their
250           properties.
251
252           Note the format: double quotes, spaces and new lines are  required.
253           The strategy specifies what to do if a controller specified already
254           exists as a built-in one: criu can either merge or replace such.
255
256           For example, the command line for the  above  example  should  look
257           like this:
258
259               --cgroup-props "\"c1\":\n - \"strategy\": \"merge\"\n - \"properties\": [\"a\", \"b\"]\n \"c2\":\n - \"strategy\": \"replace\"\n - \"properties\": [\"c\", \"d\"]"
260
261       --cgroup-props-file file
262           Same  as  --cgroup-props, except the specification is read from the
263           file.
264
265       --cgroup-dump-controller name
266           Dump a controller with name only, skipping anything else  that  was
267           discovered automatically (usually via /proc). This option is useful
268           when one needs criu to skip some controllers.
269
270       --cgroup-yard path
271           Instead of trying to mount cgroups in CRIU, provide  a  path  to  a
272           directory  with  already  created  cgroup yard. Useful if you don’t
273           want to grant CAP_SYS_ADMIN to CRIU. For every cgroup  mount  there
274           should be exactly one directory. If there is only one controller in
275           this mount, the dir’s name should be just  the  name  of  the  con‐
276           troller. If there are multiple controllers comounted, the directory
277           name should have them be separated by a comma.
278
279           For example, if /proc/cgroups looks like this:
280
281               #subsys_name hierarchy num_cgroups enabled
282               cpu          1         1           1
283               devices      2         2           1
284               freezer      2         2           1
285
286           then you can create the cgroup yard by the following commands:
287
288               mkdir private_yard
289               cd private_yard
290               mkdir cpu
291               mount -t cgroup -o cpu none cpu
292               mkdir devices,freezer
293               mount -t cgroup -o devices,freezer none devices,freezer
294
295       --tcp-established
296           Checkpoint established TCP connections.
297
298       --skip-in-flight
299           This option skips in-flight TCP connections. If any TCP connections
300           that  are  not  yet  completely established are found, criu ignores
301           these connections, rather than errors out. The  TCP  stack  on  the
302           client side is expected to handle the re-connect gracefully.
303
304       --evasive-devices
305           Use any path to a device file if the original one is inaccessible.
306
307       --page-server
308           Send pages to a page server (see the page-server command).
309
310       --force-irmap
311           Force resolving names for inotify and fsnotify watches.
312
313       --auto-dedup
314           Deduplicate  "old"  data  in  pages  images  of previous dump. This
315           option implies incremental dump mode (see the pre-dump command).
316
317       -l, --file-locks
318           Dump file locks. It is necessary to make sure that  all  file  lock
319           users  are  taken  into  dump,  so  it is only safe to use this for
320           enclosed containers where locks are not held by any processes  out‐
321           side of dumped process tree.
322
323       --link-remap
324           Allows  to link unlinked files back, if possible (modifies filesys‐
325           tem during restore).
326
327       --ghost-limit size
328           Set the maximum size of deleted file to be carried inside image. By
329           default,  up to 1M file is allowed. Using this option allows to not
330           put big deleted files inside images. Argument size may be postfixed
331           with  a  K,  M  or  G, which stands for kilo-, mega, and gigabytes,
332           accordingly.
333
334       -j, --shell-job
335           Allow one to dump shell jobs. This implies the restored  task  will
336           inherit  session  and  process  group ID from the criu itself. This
337           option also allows to migrate a single external tty connection,  to
338           migrate  applications  like top. If used with dump command, it must
339           be specified with restore as well.
340
341       --cpu-cap [cap[,cap...]]
342           Specify CPU capabilities to write to an image file. The argument is
343           a comma-separated list of:
344
345           ·   none  to ignore capabilities at all; the image will not be pro‐
346               duced on dump, neither any check performed on restore;
347
348           ·   fpu to check if FPU module is compatible;
349
350           ·   ins to check if CPU supports all instructions required;
351
352           ·   cpu to check if CPU capabilities are exactly matching;
353
354           ·   all for all above set.
355
356           By default the option is set to fpu and ins.
357
358       --cgroup-root [controller:]/newroot
359           Change the root for the controller that will be dumped. By default,
360           criu  simply  dumps  everything  below where any of the tasks live.
361           However, if a container moves all of its tasks into a cgroup direc‐
362           tory below the container engine’s default directory for tasks, per‐
363           missions will not be preserved on the  upper  directories  with  no
364           tasks in them, which may cause problems.
365
366       --lazy-pages
367           Perform  the  dump  procedure without writing memory pages into the
368           image files and prepare to service page requests over the  network.
369           When dump runs in this mode it presumes that lazy-pages daemon will
370           connect to it and fetch memory pages to lazily inject them into the
371           restored  process  address  space.  This  option  is  intended  for
372           post-copy (lazy) migration and should be used in  conjunction  with
373           restore with appropriate options.
374
375   restore
376       Restores previously checkpointed processes.
377
378       --inherit-fd fd[N]:resource
379           Inherit  a  file  descriptor.  This option lets criu use an already
380           opened file  descriptor  N  for  restoring  a  file  identified  by
381           resource.  This  option can be used to restore an external resource
382           dumped with the help of --external file, tty, and unix options.
383
384           The resource argument can be one of the following:
385
386           ·   tty[rdev:dev]
387
388           ·   pipe[inode]
389
390           ·   socket[inode*]*
391
392           ·   file[mnt_id:inode]
393
394           ·   path/to/file
395
396           Note that square brackets used in this option arguments are  liter‐
397           als and usually need to be escaped from shell.
398
399       -d, --restore-detached
400           Detach criu itself once restore is complete.
401
402       -s, --leave-stopped
403           Leave  tasks  in  stopped state after restore (rather than resuming
404           their execution).
405
406       -S, --restore-sibling
407           Restore  root  task  as  a   sibling   (makes   sense   only   with
408           --restore-detached).
409
410       --log-pid
411           Write separate logging files per each pid.
412
413       -r, --root path
414           Change the root filesystem to path (when run in a mount namespace).
415           This option is required to restore a mount namespace. The directory
416           path must be a mount point and its parent must not be overmounted.
417
418       --external type[id]:value
419           Restore  an instance of an external resource. The generic syntax is
420           type of resource, followed by  resource  id  (enclosed  in  literal
421           square  brackets),  and  optional  value  (prepended  by  a literal
422           colon). The following resource types are currently supported:  mnt,
423           dev,  veth, macvlan. Syntax depends on type. Note to restore exter‐
424           nal resources dealing with opened file descriptors (such as  dumped
425           with  the  help  of --external file, tty, and unix options), option
426           --inherit-fd should be used.
427
428       --external mnt[name]:mountpoint
429           Restore an external bind mount referenced in  the  image  by  name,
430           bind-mounting it from the host mountpoint to a proper mount point.
431
432       --external mnt[]
433           Restore  all external bind mounts (dumped with the help of --exter‐
434           nal mnt[] auto-detection).
435
436       --external dev[name]:/dev/path
437           Restore an external mount device, identified in the image by  name,
438           using the existing block device /dev/path.
439
440       --external veth[inner_dev]:outer_dev@bridge
441           Set  the  outer  VETH device name (corresponding to inner_dev being
442           restored) to outer_dev. If optional @bridge is specified, outer_dev
443           is  added to that bridge. If the option is not used, outer_dev will
444           be autogenerated by the kernel.
445
446       --external macvlan[inner_dev]:outer_dev
447           When restoring an image that have a  MacVLAN  device  in  it,  this
448           option must be used to specify to which outer_dev (an existing net‐
449           work device in CRIU namespace) the  restored  inner_dev  should  be
450           bound to.
451
452       --manage-cgroups [mode]
453           Restore  cgroups  configuration  associated  with  a  task from the
454           image. Controllers are always restored in an optimistic  way  —  if
455           already  present  in  system,  criu reuses it, otherwise it will be
456           created.
457
458       The mode may be one of the following:
459
460       none
461           Do not restore cgroup properties but require cgroup to pre-exist at
462           the moment of restore procedure.
463
464       props
465           Restore cgroup properties and require cgroup to pre-exist.
466
467       soft
468           Restore  cgroup properties if only cgroup has been created by criu,
469           otherwise do not restore properties. This is the default if mode is
470           unspecified.
471
472       full
473           Always restore all cgroups and their properties.
474
475       strict
476           Restore  all cgroups and their properties from the scratch, requir‐
477           ing them to not present in the system.
478
479       ignore
480           Don’t deal with cgroups and pretend that they don’t exist.
481
482           --cgroup-yard path
483               Instead of trying to mount cgroups in CRIU, provide a path to a
484               directory  with  already created cgroup yard. For more informa‐
485               tion look in the dump section.
486
487           --cgroup-root [controller:]/newroot
488               Change the root cgroup the controller will be  installed  into.
489               No  controller  means  that  root  is  the default for all con‐
490               trollers not specified.
491
492           --tcp-established
493               Restore previously dumped  established  TCP  connections.  This
494               implies  that  the  network  has  been  locked between dump and
495               restore phases so other side of a connection  simply  notice  a
496               kind of lag.
497
498           --tcp-close
499               Restore connected TCP sockets in closed state.
500
501           --veth-pair IN=OUT
502               Correspondence   between  outside  and  inside  names  of  veth
503               devices.
504
505           -l, --file-locks
506               Restore file locks from the image.
507
508           --lsm-profile type:name
509               Specify an LSM profile to be used during restore. The type  can
510               be either apparmor or selinux.
511
512           --auto-dedup
513               As soon as a page is restored it get punched out from image.
514
515           -j, --shell-job
516               Restore  shell jobs, in other words inherit session and process
517               group ID from the criu itself.
518
519           --cpu-cap [cap[,cap...]]
520               Specify CPU capabilities to be present on the CPU  the  process
521               is  restoring.  To inverse a capability, prefix it with ^. This
522               option implies that --cpu-cap has been passed on dump as  well,
523               except  fpu  option case. The cap argument can be the following
524               (or a set of comma-separated values):
525
526       all
527           Require all capabilities. This is  default  mode  if  --cpu-cap  is
528           passed without arguments. Most safe mode.
529
530       cpu
531           Require  the CPU to have all capabilities in image to match runtime
532           CPU.
533
534       fpu
535           Require the CPU to have compatible FPU.  For  example  the  process
536           might  be  dumped  with  xsave  capability but attempted to restore
537           without it present on target CPU. In such case we  refuse  to  pro‐
538           ceed.  This  is default mode if --cpu-cap is not present in command
539           line. Note this argument might be passed even if  on  the  dump  no
540           --cpu-cap have been specified because FPU frames are always encoded
541           into images.
542
543       ins
544           Require CPU compatibility on instructions level.
545
546       none
547           Ignore capabilities. Most dangerous mode. The behaviour  is  imple‐
548           mentation dependent. Try to not use it until really required.
549
550           For example, this option can be used in case --cpu-cap=cpu was used
551           during dump, and images are migrated to a less capable CPU and  are
552           to  be restored. By default, criu shows an error that CPU capabili‐
553           ties are  not  adequate,  but  this  can  be  suppressed  by  using
554           --cpu-cap=none.
555
556           --weak-sysctls
557               Silently  skip  restoring  sysctls that are not available. This
558               allows to restore on an older kernel, or  a  kernel  configured
559               without some options.
560
561           --lazy-pages
562               Restore  the  processes  without  filling out the entire memory
563               contents. When this option is used, restore sets up the  infra‐
564               structure  required  to fill memory pages either on demand when
565               the process accesses them or in the background without stopping
566               the  restored  process. This option requires running lazy-pages
567               daemon.
568
569   check
570       Checks whether the kernel supports the features needed by criu to  dump
571       and restore a process tree.
572
573       There  are three categories of kernel support, as described below. criu
574       check always checks Category 1 features unless --feature  is  specified
575       which only checks a specified feature.
576
577       Category 1
578           Absolutely   required.   These   are   features  like  support  for
579           /proc/PID/map_files,    NETLINK_SOCK_DIAG    socket     monitoring,
580           /proc/sys/kernel/ns_last_pid etc.
581
582       Category 2
583           Required  only  for  specific  cases.  These  are features like AIO
584           remap, /dev/net/tun and others that are only required if a  process
585           being dumped or restored is using those.
586
587       Category 3
588           Experimental.  These  are features like task-diag that are used for
589           experimental purposes (mostly during development).
590
591       If there are no errors or warnings, criu prints "Looks good."  and  its
592       exit code is 0.
593
594       A missing Category 1 feature causes criu to print "Does not look good."
595       and its exit code is non-zero.
596
597       Missing Category 2 and 3 features cause criu to print "Looks  good  but
598       ..." and its exit code is be non-zero.
599
600       Without any options, criu check checks Category 1 features. This behav‐
601       ior can be changed by using the following options:
602
603       --extra
604           Check kernel support for Category 2 features.
605
606       --experimental
607           Check kernel support for Category 3 features.
608
609       --all
610           Check kernel support for Category 1, 2, and 3 features.
611
612       --feature name
613           Check a specific feature. If name is list, a list of  valid  kernel
614           feature names that can be checked will be printed.
615
616   page-server
617       Launches criu in page server mode.
618
619       --daemon
620           Runs page server as a daemon (background process).
621
622       --status-fd
623           Write \0 to the FD and close it once page-server is ready to handle
624           requests. The status-fd allows to not daemonize a process  and  get
625           its  exit  code  at  the end. It isn’t supposed to use --daemon and
626           --status-fd together.
627
628       --address address
629           Page server IP address or hostname.
630
631       --port number
632           Page server port number.
633
634       --ps-socket fd
635           Use provided file descriptor as socket for incoming connection.  In
636           this case --address and --port are ignored. Useful for intercepting
637           page-server traffic e.g. to add encryption or authentication.
638
639       --lazy-pages
640           Serve local memory dump to a remote lazy-pages daemon. In this mode
641           the  page-server  reads  local  memory  dump  and allows the remote
642           lazy-pages daemon to request memory pages in random order.
643
644       --tls-cacert file
645           Specifies the path to a trusted Certificate Authority (CA) certifi‐
646           cate  file  to  be used for verification of a client or server cer‐
647           tificate. The file must be in PEM format. When this option is  used
648           only the specified CA is used for verification. Otherwise, the sys‐
649           tem’s trusted CAs and, if present, /etc/pki/CA/cacert.pem  will  be
650           used.
651
652       --tls-cacrl file
653           Specifies  a path to a Certificate Revocation List (CRL) file which
654           contains a list of revoked certificates that should  no  longer  be
655           trusted.  The  file  must be in PEM format. When this option is not
656           specified, the file,  if  present,  /etc/pki/CA/cacrl.pem  will  be
657           used.
658
659       --tls-cert file
660           Specifies  a  path  to  a file that contains a X.509 certificate to
661           present to the remote entity. The file must be in PEM format.  When
662           this    option    is    not   specified,   the   default   location
663           (/etc/pki/criu/cert.pem) will be used.
664
665       --tls-key file
666           Specifies a path to a file that contains TLS private key. The  file
667           must be in PEM format. When this option is not the default location
668           (/etc/pki/criu/private/key.pem) will be used.
669
670       --tls
671           Use TLS to secure remote connections.
672
673   lazy-pages
674       Launches criu in lazy-pages daemon mode.
675
676       The lazy-pages daemon is responsible  for  managing  user-level  demand
677       paging for the restored processes. It gets information required to fill
678       the process memory pages from  the  restore  and  from  the  checkpoint
679       directory.  When  a restored process access certain memory page for the
680       first time, the lazy-pages daemon injects its contents into the process
681       address  space.  The  memory  pages  that  are not yet requested by the
682       restored processes are injected in the background.
683
684   exec
685       Executes a system call inside a destination task's context. This  func‐
686       tionality is deprecated; please use Compel instead.
687
688   service
689       Launches  criu in RPC daemon mode, where criu is listening for RPC com‐
690       mands over socket to perform. This is convenient for a case where  dae‐
691       mon  itself is running in a privileged (superuser) mode but clients are
692       not.
693
694   dedup
695       Starts pagemap data deduplication procedure, where criu scans over  all
696       pagemap  files  and  tries to minimize the number of pagemap entries by
697       obtaining the references from a parent pagemap image.
698
699   cpuinfo dump
700       Fetches current CPU features and write them into an image file.
701
702   cpuinfo check
703       Fetches current CPU features (i.e. CPU the criu is running on) and test
704       if they are compatible with the ones present in an image file.
705

CONFIGURATION FILES

707       Criu supports usage of configuration files to avoid the need of writing
708       every option on command line, which is useful especially with  repeated
709       usage of same options. A specific configuration file can be passed with
710       the "--config file" option. If no file is passed, the default  configu‐
711       ration  files  /etc/criu/default.conf  and $HOME/.criu/default.conf are
712       parsed  (if  present  on  the  system).  If  the  environment  variable
713       CRIU_CONFIG_FILE is set, it will also be parsed.
714
715       The options passed to CRIU via CLI, RPC or configuration file are eval‐
716       uated in the following order:
717
718       ·   apply_config(/etc/criu/default.conf)
719
720       ·   apply_config($HOME/.criu/default.conf)
721
722       ·   apply_config(CRIU_CONFIG_FILE)
723
724       ·   apply_config(--config file)
725
726       ·   apply_config(CLI) or apply_config(RPC)
727
728       ·   apply_config(RPC configuration file) (only for RPC mode)
729
730       Default  configuration   file   parsing   can   be   deactivated   with
731       "--no-default-config"  if needed. Parsed configuration files are merged
732       with command line options, which allows overriding boolean options.
733
734   Configuration file syntax
735       Comments are supported using '#' sign. The rest of the line is ignored.
736       Options  are  the same as command line options without the '--' prefix,
737       use one option per line (with  corresponding  argument  if  applicable,
738       divided  by  whitespaces).  If  needed, the argument can be provided in
739       double quotes (this should be needed  only  if  the  argument  contains
740       whitespaces).  In  case this type of argument contains a literal double
741       quote as well, it can be escaped using the '\' sign. Usage of  commands
742       is disallowed and all other escape sequences are interpreted literally.
743
744       Example of configuration file to illustrate syntax:
745
746           $ cat ~/.criu/default.conf
747           tcp-established
748           work-dir "/home/USERNAME/criu/my \"work\" directory"
749           #this is a comment
750           no-restore-sibling   # this is another comment
751
752   Configuration files in RPC mode
753       Not  only  does  criu evaluate configuration files in CLI mode, it also
754       evaluates configuration files in RPC mode. Just as in CLI mode the con‐
755       figuration  file values are evaluated first. This means that any option
756       set via RPC will overwrite the configuration file setting. The user can
757       thus  change  criu's  default behavior but it is not possible to change
758       settings which are explicitly set by the RPC client.
759
760       The RPC client can, however, specify an additional  configuration  file
761       which  will  be  evaluated  after the RPC options (see above for option
762       evaluation order). The RPC client can specify this additional  configu‐
763       ration file via "req.opts.config_file = /path/to/file". The values from
764       this configuration file will overwrite  all  other  configuration  file
765       settings  or  RPC  options. This can lead to undesired behavior of criu
766       and should only be used carefully.
767

EXAMPLES

769       To checkpoint a program with pid of 1234 and write all image files into
770       directory checkpoint:
771
772               criu dump -D checkpoint -t 1234
773
774       To restore this program detaching criu itself:
775
776               criu restore -d -D checkpoint
777

AUTHOR

779       The CRIU team.
780
782       Copyright (C) 2011-2016, Parallels Holdings, Inc.
783
784
785
786criu 3.14                         04/29/2020                           CRIU(8)
Impressum