Simple loop
Revision as of 11:30, 12 April 2013 by Avagin (talk | contribs) (→Dumping a simplest process in a new session without controll terminal)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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