[Solved]Сохранение стека, перезагрузка и возобновление задачи
xexex 21 Августа, 2008 - 22:52
Здравствуйте, возникла необходимость прерывания работы системы (полное выключение компьютера), с дальнейшей возможностью после включения(к примеру на след. день) возобновления работы какого-либо процесса. К примеру, длительные вычисления или хотя бы тот же процесс компиляции (в надежде что ничего не сдохнет). Предусмотрены ли в Linux возможности полного сохранения текущего состояния с дальнейшим перезапуском. Если скажете нет не поверю!!!_)))
Подскажите пожалуйста хотя бы где искать литературу по данному вопросу.
Заранее благодарен! ;-)
»
- Для комментирования войдите или зарегистрируйтесь
Про отдельный
Про отдельный процесс не знаю, но можно сбросить оперативку на дис и вырубить комп для этого нужен TuxonIce.
не обязательно
не обязательно tuxonice вообще ищем доки по software suspend =)
или если отдельный процесс то читай про checkpoint/restart
___________________________________________
Gentoo GNU/Linux 2.6.26 GCC 4.3.1
Working on Gentoo for iPAQ hx4700 :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера
Спасибо за
Спасибо за инфо! Очень признателен!!!
Все прекрасно работает! Пока играюсь с TuxOnIce )) - пока без нареканий!)))
И для размышлений - если вдруг я захочу перекомпилировать ядро в процессе выполнения задачи и записать его (/sbin/lilo), к каким последствиям это приведет?
Представьте схему - я добавил модуль в ядро, прописал в /etc/modules.autoload/kernel* или не прописал;-)- TuxOnIce автоматически (поправьте, если ошибаюсь!!!) выгружвет модули при выключении компьютера, считывает данные со сжатого образа и обратно загружает те же модули, что и были при выключении.
Произойдет ли какая-нибудь фатальная ошибка при сверке-проверке, или я смогу безболезненно загрузить их вручную, modprobe используя. По идее ничего страшного не должно произойти - я только меняю конфиг ядра а модули загружаю автоматом ручками
И вторая ситуация - я включил поддержку в ядро, что произойдет в таком случае? Просто не будет работать поддержка тех или иных включенных опций или что то из серии Fatal Error?
Просьба к тем кто задавался таким вопросом отозваться!;-)
Если ядро
Если ядро остается тоже, добавляется только модуль, то как правила можно просто подгрузить этот модуль командой modprobe. У меня такие варианты проходили на ура...
;-) Несказанно
;-) Несказанно обрадовали - теперь без опасения буду ломать свою систему!))
А у меня CryoPID не
А у меня CryoPID не собрался :(
Это для версии 0.5.9.1:
! test -h arch && rm -f arch && ln -s arch-i386 arch || true
make -C arch 'CFLAGS+=-DUSE_TCPCP -fno-stack-protector'
make[1]: Entering directory `/var/tmp/portage/sys-processes/cryopid-0.5.9.1/work/cryopid-0.5.9.1/src/arch-i386'
cc -DUSE_TCPCP -fno-stack-protector -g -Wall -Os -fpic -I. -I.. -c -o cp_r_regs.o cp_r_regs.c
cp_r_regs.c:1:24: error: linux/user.h: Нет такого файла или каталога
cp_r_regs.c: В функции ‘load_chunk_regs’
cp_r_regs.c:17: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:21: ошибка: ‘PAGE_SIZE’ undeclared (first use in this function)
cp_r_regs.c:21: ошибка: (Each undeclared identifier is reported only once
cp_r_regs.c:21: ошибка: for each function it appears in.)
cp_r_regs.c:27: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:28: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:28: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:31: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:32: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:36: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:37: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:63: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:64: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:65: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:66: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:67: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:84: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:85: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:86: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:92: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:93: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:94: ошибка: доступ по указателю на неполный тип
cp_r_regs.c:93: ошибка: invalid lvalue in asm output 0
cp_r_regs.c: В функции ‘read_chunk_regs’
cp_r_regs.c:102: ошибка: storage size of ‘user’ isn’t known
cp_r_regs.c:104: ошибка: некорректное применение ‘sizeof’ к неполному типу ‘struct user’
cp_r_regs.c:102: предупреждение: unused variable ‘user’
make[1]: *** [cp_r_regs.o] Ошибка 1
make[1]: Leaving directory `/var/tmp/portage/sys-processes/cryopid-0.5.9.1/work/cryopid-0.5.9.1/src/arch-i386'
make: *** [arch] Ошибка 2
посмотрел с /usr/include/linux и правда user.h - нету, есть в /usr/include/sys - создал линк, теперь получаю:
! test -h arch && rm -f arch && ln -s arch-i386 arch || true
make -C arch 'CFLAGS+=-DUSE_TCPCP -fno-stack-protector'
make[1]: Entering directory `/var/tmp/portage/sys-processes/cryopid-0.5.9.1/work/cryopid-0.5.9.1/src/arch-i386'
cc -DUSE_TCPCP -fno-stack-protector -g -Wall -Os -fpic -I. -I.. -c -o cp_r_regs.o cp_r_regs.c
cp_r_regs.c: В функции ‘load_chunk_regs’
cp_r_regs.c:31: ошибка: ‘struct user_regs_struct’ has no member named ‘gs’
cp_r_regs.c:32: ошибка: ‘struct user_regs_struct’ has no member named ‘gs’
cp_r_regs.c:93: ошибка: ‘struct user_regs_struct’ has no member named ‘cs’
cp_r_regs.c:94: ошибка: ‘struct user_regs_struct’ has no member named ‘cs’
cp_r_regs.c:93: ошибка: invalid lvalue in asm output 0
cp_r_regs.c: В функции ‘read_chunk_regs’
cp_r_regs.c:114: ошибка: ‘struct user_regs_struct’ has no member named ‘ds’
cp_r_regs.c:114: ошибка: ‘struct user_regs_struct’ has no member named ‘es’
cp_r_regs.c:114: ошибка: ‘struct user_regs_struct’ has no member named ‘fs’
cp_r_regs.c:114: ошибка: ‘struct user_regs_struct’ has no member named ‘gs’
make[1]: *** [cp_r_regs.o] Ошибка 1
make[1]: Leaving directory `/var/tmp/portage/sys-processes/cryopid-0.5.9.1/work/cryopid-0.5.9.1/src/arch-i386'
make: *** [arch] Ошибка 2
Нашел даже ebuild для него, но он для 0.5.9 и тоже не компилиться:
! test -h arch && rm -f arch && ln -s arch-i386 arch || true
make: *** Нет правила для сборки цели `arch/asmfuncs.o', требуемой для `freeze'. Останов.
make: *** Ожидание завершения заданий...
make -C arch 'CFLAGS+=-DUSE_TCPCP'
make[1]: Entering directory `/var/tmp/portage/sys-processes/cryopid-0.5.9/work/cryopid-0.5.9/src/arch-i386'
make[1]: предупреждение: сервер задач недоступен: используется -j1.
Добавьте `+' к правилу в родительском make.
cc -g -Wall -Os -I. -Iarch -D__i386__ -DUSE_TCPCP -DUSE_TCPCP -g -Wall -Os -fpic -I. -I.. -c -o stub.o stub.c
In file included from ../cryopid.h:9,
from stub.c:9:
../arch/arch.h:47: ошибка: expected declaration specifiers or ‘...’ before ‘sys_clone’
../arch/arch.h:47: ошибка: expected declaration specifiers or ‘...’ before ‘flags’
../arch/arch.h:47: ошибка: expected declaration specifiers or ‘...’ before ‘child_stack’
../arch/arch.h:47: предупреждение: в декларации ‘_syscall2’ по умолчанию установлен тип ‘int’
make[1]: *** [stub.o] Ошибка 1
make[1]: Leaving directory `/var/tmp/portage/sys-processes/cryopid-0.5.9/work/cryopid-0.5.9/src/arch-i386'
make: *** [arch] Ошибка 2
И чего с этим можно сделать?
Ядро - 2.6.26.3. Calculate linux i686
щас будем
щас будем смотреть - я так и не стал пользоваться CryoPid, но раз уж такое дело - айн момент!
CryoPID позволяет
CryoPID позволяет сохранять в файле состояние запущенного процесса. Этот файл, в дальнейшем, может быть использован для запуска процесса после перезагрузки системы или даже на другой системе с другой версией ядра (2.4/2.6).
Особенности:
не требует привилегий root;
не требует модификаций ядра;
не требует перекомпиляции замораживаемой программы;
не использует LD_PRELOAD;
http://cryopid.berlios.de/
Огромнейшее
Огромнейшее спасибо ! Изучаем!))