Как безопасно принудительно выключить Mac

что я хочу!--2-->

Я разрабатываю небольшое приложение, чтобы заставить меня работать только в определенное время дня - мне нужно что-то, чтобы заставить меня перестать работать по вечерам, чтобы я мог быть более эффективным в день.

опция в OS X для выключения моей машины в определенное время слишком проста для отмены. И вы всегда можете войти в систему после этого.

Я хочу, чтобы мое приложение выходило из всех приложений, имеют ли они несохраненную работу или нет.

что я пробовал

Я думал, что убить процесс loginwindow, но я читал, что это может привести к повреждению данных.

Я столкнулся с командой выключения-я использую sudo shutdown-h +0 для немедленного выключения. Это, кажется, просто билет, но я беспокоюсь, что это может привести к повреждению данных, если, скажем, Disk Utility выполняет какое-то сканирование.

является ли команда shutdown безопасной?

Can команда shutdown вызывает повреждение? Или безопасно использовать? Есть ли лучший способ безопасного отключения?

6 ответов


команда shutdown отправляет запущенным процессам сигнал на завершение, давая им возможность выполнить очистную работу, если это необходимо. Поэтому обычно, когда приложение получает этот сигнал (SIGTERM(inate)) он должен обернуться и выйти.

IIRC в Snow Leopard (10.6) Apple добавила что-то под названием fast-shutdown (или подобное), которое отправит процессы, которые были помечены как ок с ним SIGKILL сигнал, выключение их без шансов на очистку. Это должно сделать выключение быстрее. По умолчанию приложения по-прежнему получают SIGTERM и в SIGKILL; и они могут пометить себя как "грязные", Я. e. имея неспасенную работу и не желая быть убитым насильно.

таким образом, при выключении в середине запуска дисковой утилиты будет прерывать любую Дисковую утилиту, IMHO это не приведет к повреждению данных в целом. Однако в зависимости от текущей выполняемой операции вы можете получить неполный образ диска или наполовину отформатированный раздел. Возможно, вы хотите воздержаться от его использования, когда знаете, что конец настроенного рабочего времени приближается.

используя cron график отключения является жизнеспособным вариантом, если вы хотите, чтобы это произошло в указанное время. Если вы хотите, чтобы это произошло через определенное время после входа в систему, вы можете использовать параметр number для выключения, чтобы указать, скажем, через 8 часов.


используйте AppleScript для tell application "System Events" to shut down.


Если вы хочу потерять несохраненную работу тогда shutdown -h - Это ваш единственный ответ.

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


заставить ваш компьютер выключить (и отказаться от любой несохраненной работы) не звучит как хорошая идея для меня. Не будет ли проще и безопаснее просто установить будильник, чтобы напомнить себе, когда вы должны перестать работать, и уйти от компьютера, когда он звонит? (Вот что я делаю.)

Edit: это могло показаться немного грубым, что вовсе не входило в мои намерения. (У меня не было намерения высмеивать ваш вопрос или что-то в этом роде.) Я просто думаю что это было бы лучшим решением этой проблемы:)


рекомендуемый способ запланировать выключение компьютера на регулярной основе находится в панели Системные настройки -> энергосбережение. Нажмите на кнопку "расписание" в правом нижнем углу. остальное само собой разумеется...


может быть, cron установлен на вашем компьютере? Это замечательно =)