У меня есть Mac mini с запущенным сервером Mavericks. Я установил сервер Atmail + виртуальную машину веб-почты [дистрибутив Linux Centos] в VMware Fusion Professional 6 с дополнением VMware Tools. Работает безупречно. Я настроил его на запуск при загрузке, и это работает очень надежно. Однако я искал способ безопасно и изящно выключать его всякий раз, когда OS X выключается по какой-либо причине. Mac подключен к ИБП и настроен на автоматическое выключение в случае, если батарея начинает разряжаться, так что это не дополнительная проблема.
Теперь первое, что я сделал, это зашел в настройки Fusion и выбрал "Power off the vm" при закрытии. Однако я заметил, что по какой-то непонятной причине закрытие окна vm на самом деле принудительно отключает vm: так что затем я нашел этопочтакоторый показал мне, как изменить параметры питания по умолчанию, и мне удалось заставить виртуальную машину корректно выключиться при закрытии ее окна или полном выходе из Fusion. В этот момент я надеялся решить проблему, но, как оказалось, при вызове выключения системы OS X не ждет, пока виртуальная машина выключится, и завершает Fusion до того, как она успеет это сделать. В этот момент я начал искать способ автоматизировать процесс выключения гостевой ОС с помощью некоторых дополнительных настроек, но мне это не удалось. Именно тогда я нашел команду для выключения виртуальной машины: vmrun
и она сработала. Оставалось только найти способ выполнить этот скрипт при выключении OS X и дать ей немного времени для полного выключения. Однако это оказалось кошмаром: я потратил часы, просматривая несколько способов сделать это с помощью элементов автозагрузки, rc.shutdown, cron, launchd и т. д., но ни один из них не работал так, как я их настроил.
Должен сказать, что я нашел очень ограниченную информацию об использовании launchd для выполнения скрипта выключения, и я знаю, что это последнее новшество в мире OS X, поэтому я надеюсь, что кто-то из вас сможет мне с этим помочь. Я все еще думаю, что это чрезвычайно базовая функция, о которой можно просить, и я был действительно удивлен, обнаружив эту небольшую документацию по столь многим различным аспектам этой проблемы. Является ли Fusion слишком базовым приложением для этого?
Я очень надеюсь, что кто-то сможет помочь. Спасибо большое заранее.
решение1
Пробовали ли вы метод, обсуждаемый в этом ответе на stackoverflow?:-
https://stackoverflow.com/questions/16542301/running-a-shell-script-on-shutdown-via-launchd
По сути, вы запускаете скрипт при запуске машины, который прослушивает сигнал SIGTERM, а затем выполняет нужную команду, когда получает его.
решение2
Вы установили vmware tools? Я могу заставить свою гостевую виртуальную машину выключиться, когда я сам выключаю компьютер, однако, когда компьютер выключается по команде отключения батареи ИБП, он ее не передает.