Вопрос: выскочка перед остановкой во время выключения


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

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

моя работа («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
2018-04-24 20:28


Источник




Ответы:


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

использование

kill timeout 10

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

Использовать это:

stop on starting rc RUNLEVEL=[016]

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

Кроме того, ваш комплекс SUPER запускается совсем не обязательно, хотя кажется, что вы скопировали его из gdm или lightdm.

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

start on started lightdm or started gdm

4
2017-09-02 17:00