выскочка пре-стоп убит во время выключения

Я использую сервер Ubuntu, размещая виртуальную машину, используя задание upstart. Я запускаю его при запуске и выключаю хост при выходе, но я не могу заставить его приостановиться, когда хост выключается. Если я использую initctl stop vmservice, то приостановка происходит правильно - но если я shutdown -h now или reboot, похоже, что он просто убивается (я пытался поместить сон в сценарий pre-stop, и он ведет себя так же ). Любая помощь будет оценена.

Я довольно новичок в выскочке, поэтому я был бы признателен за любые другие отзывы (в том числе, делаю ли я «правильную» вещь, вызывая shutdown на post-stop?).

моя работа ('start on' была выловлена ​​из kdm.conf; .startvm и .stopvm просто запускаются и приостанавливают виртуальную машину):

start on (filesystem
          and started dbus
          and (graphics-device-added fb0 PRIMARY_DEVICE_FOR_DISPLAY=1
               or drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
               or stopped udevtrigger))
stop on runlevel [016]

pre-stop script
    exec su -c "/home/unprivileged_user/.stopvm" - unprivileged_user
end script

env XORGCONFIG=/etc/X11/xorg.conf
exec su -c "xinit /home/unprivileged_user/.startvm -- /etc/X11/xinit/xserverrc :0" - unprivileged_user

post-stop script
    shutdown -h now
end script
4
задан 25 April 2011 в 05:16

1 ответ

Upstart отправит SIGKILL (как в kill -9) через 5 секунд ожидания предварительной остановки или сигнала, отправленного основному процессу.

Используйте

kill timeout 10

, чтобы дать себе 10 секунд, чтобы умереть. Вы на самом деле не можете дать себе больше, чем это, потому что остановка будет ждать только 10 секунд, пока все процессы не прекратятся, прежде чем полностью отключиться в любом случае. Чтобы убедиться, что ваша виртуальная машина остановлена ​​ до , начинается полное отключение системы:

Используйте это:

stop on starting rc RUNLEVEL=[016]

. Это обеспечит полную остановку вашей виртуальной машины до того, как система начинает обычную процедуру выключения (хотя тайм-аут уничтожения все еще действует, так что увеличьте его тоже!)

Кроме того, запуск вашего СУПЕР-комплекса вообще не нужен, хотя кажется, что вы скопировали это от GDM или Lightdm.

Если вы просто хотите, чтобы ваша виртуальная машина работала при работе диспетчера дисплея, это намного проще:

start on started lightdm or started gdm
0
ответ дан 25 April 2011 в 05:16

Другие вопросы по тегам:

Похожие вопросы: