Difference between revisions of "Simple loop"

From CRIU
Jump to: navigation, search
(Dumping one shell job)
(Dumping a simplest process in a new session without controll terminal)
Line 1: Line 1:
 
= Dumping a simplest process in a new session without controll terminal =
 
= Dumping a simplest process in a new session without controll terminal =
 +
At first let's dump/restore a trivial process without external dependences.
 +
* For that we can create a shell script, which will report date and time every second. For removing dependences on a current terminal it will be executed in a new session and output will be redirected in a file.
 
  $ cat > test.sh <<-EOF
 
  $ cat > test.sh <<-EOF
 
  #!/bin/sh
 
  #!/bin/sh
Line 13: Line 15:
 
  [2]+  Done                    setsid ./test.sh < /dev/null &>test.log
 
  [2]+  Done                    setsid ./test.sh < /dev/null &>test.log
  
 
+
* Get pid of the test process:
 
  $  ps -C test.sh
 
  $  ps -C test.sh
 
   PID TTY          TIME CMD
 
   PID TTY          TIME CMD
 
  2221 ?        00:00:00 test.sh
 
  2221 ?        00:00:00 test.sh
 +
* Dump the test process.
 
  $  ~/crtools/crtools dump -t 2221 -vvv -o dump.log && echo OK
 
  $  ~/crtools/crtools dump -t 2221 -vvv -o dump.log && echo OK
 
  OK
 
  OK
 +
* The state of the processes are saved in a few files:
 
  $  ls
 
  $  ls
 
  core-2221.img  eventpoll-tfd.img  filelocks-2221.img  inotify.img      netlinksk.img    pipes.img        sigacts-2424.img  test.log
 
  core-2221.img  eventpoll-tfd.img  filelocks-2221.img  inotify.img      netlinksk.img    pipes.img        sigacts-2424.img  test.log
Line 27: Line 31:
 
  eventfd.img    fifo-data.img      ids-2424.img        mm-2221.img      pages-2.img      rlimit-2424.img  signal-s-2424.img  vmas-2221.img
 
  eventfd.img    fifo-data.img      ids-2424.img        mm-2221.img      pages-2.img      rlimit-2424.img  signal-s-2424.img  vmas-2221.img
 
  eventpoll.img  fifo.img          inetsk.img          mm-2424.img      pipes-data.img    sigacts-2221.img  sk-queues.img      vmas-2424.img
 
  eventpoll.img  fifo.img          inetsk.img          mm-2424.img      pipes-data.img    sigacts-2221.img  sk-queues.img      vmas-2424.img
 
+
* Restore the test process.
 
  $ ~/crtools/crtools restore -d -t 2221 -vvv -o restore.log && echo OK
 
  $ ~/crtools/crtools restore -d -t 2221 -vvv -o restore.log && echo OK
 
  OK
 
  OK

Revision as of 11:30, 12 April 2013

Dumping a simplest process in a new session without controll terminal

At first let's dump/restore a trivial process without external dependences.

  • For that we can create a shell script, which will report date and time every second. For removing dependences on a current terminal it will be executed in a new session and output will be redirected in a file.
$ cat > test.sh <<-EOF
#!/bin/sh
while :; do
    sleep 1
    date
done
EOF

$ chmod +x test.sh
$ setsid ./test.sh  < /dev/null &> test.log &
[2] 2220
[2]+  Done                    setsid ./test.sh < /dev/null &>test.log
  • Get pid of the test process:
$  ps -C test.sh
 PID TTY          TIME CMD
2221 ?        00:00:00 test.sh
  • Dump the test process.
$  ~/crtools/crtools dump -t 2221 -vvv -o dump.log && echo OK
OK
  • The state of the processes are saved in a few files:
$  ls
core-2221.img   eventpoll-tfd.img  filelocks-2221.img  inotify.img       netlinksk.img     pipes.img         sigacts-2424.img   test.log
core-2424.img   fanotify.img       filelocks-2424.img  inotify-wd.img    packetsk.img      pstree.img        signalfd.img       test.sh
creds-2221.img  fanotify-mark.img  fs-2221.img         inventory.img     pagemap-2221.img  reg-files.img     signal-p-2221.img  tty.img
creds-2424.img  fdinfo-2.img       fs-2424.img         itimers-2221.img  pagemap-2424.img  remap-fpath.img   signal-p-2424.img  tty-info.img
dump.log        fdinfo-3.img       ids-2221.img        itimers-2424.img  pages-1.img       rlimit-2221.img   signal-s-2221.img  unixsk.img
eventfd.img     fifo-data.img      ids-2424.img        mm-2221.img       pages-2.img       rlimit-2424.img   signal-s-2424.img  vmas-2221.img
eventpoll.img   fifo.img           inetsk.img          mm-2424.img       pipes-data.img    sigacts-2221.img  sk-queues.img      vmas-2424.img
  • Restore the test process.
$ ~/crtools/crtools restore -d -t 2221 -vvv -o restore.log && echo OK
OK

Dumping one shell job

Now let's try to dump a program, which is using a terminal. For that we need to execute our test script or another program (e.g. "top") from a terminal without redirections. It will report date and time every second. crtools supports only Unix98 PTYs.

$ ./test.sh
$ ps -C test.sh
  PID TTY          TIME CMD
 2621 pts/1    00:00:00 test.sh

Currently crtools doesn't support a stopped task, so "crtools dump" must be executed from another terminal.

$  ~/crtools/crtools dump -t 2621
(00.012929) Error (tty.c:1022): tty: Found dangling tty with sid 940 pgid 2621 (pts) on peer fd 0. Consider using --shell-job option.
(00.013111) Error (cr-dump.c:1636): Dumping FAILED.

crtools asks to set the option --shell-job, because we try to dump only a part of session and a slave point of a tty pair. It's a common rule to ask a user, if only a part of something is dumped.

$ ~/crtools/crtools dump -vvvv -o dump.log -t 2621 --shell-job && echo Ok
Ok
$  ~/crtools/crtools restore -vvvv -o restore.log -t 2621 --shell-job
Fri Apr 12 12:41:09 MSK 2013
Fri Apr 12 12:41:10 MSK 2013