Difference between revisions of "Simple loop"

From CRIU
Jump to navigation Jump to search
Line 1: Line 1:
 +
= Dumping a simplest process in a new session without controll terminal =
 
  $ cat > test.sh <<-EOF
 
  $ cat > test.sh <<-EOF
 
  #!/bin/sh
 
  #!/bin/sh
Line 11: Line 12:
 
  [2] 2220
 
  [2] 2220
 
  [2]+  Done                    setsid ./test.sh < /dev/null &>test.log
 
  [2]+  Done                    setsid ./test.sh < /dev/null &>test.log
 +
  
 
  $  ps -C test.sh
 
  $  ps -C test.sh
Line 29: Line 31:
 
  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.
 
  $ ./test.sh
 
  $ ./test.sh
 
  $ ps -C test.sh
 
  $ ps -C test.sh
Line 34: Line 38:
 
   2621 pts/1    00:00:00 test.sh
 
   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
 
  $  ~/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.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.
 
  (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
 
  $ ~/crtools/crtools dump -vvvv -o dump.log -t 2621 --shell-job && echo Ok
 
  Ok
 
  Ok

Revision as of 11:03, 12 April 2013

Dumping a simplest process in a new session without controll terminal

$ 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


$  ps -C test.sh
 PID TTY          TIME CMD
2221 ?        00:00:00 test.sh
$  ~/crtools/crtools dump -t 2221 -vvv -o dump.log && echo OK
OK
$  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
$ ~/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.

$ ./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