2009-11-15 3 views
6

То, что я хочуКак безопасно Принудительно отключение Mac

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

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

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

То, что я пытался

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

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

Безопасна ли команда отключения?

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

+7

Вы не должны быть женаты. – Rap

+3

Не делайте этого. Вы пожалеете, что однажды потеряете кучу несохраненной работы. –

+0

«И вы всегда можете войти в систему позже». Затем вам нужно будет запретить логины в течение определенных часов. –

ответ

2

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

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

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

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

+0

Отличный ответ, Даниэль, спасибо. Интересно услышать больше информации о быстром отключении в Snow Leopard, о котором я слышал. –

-1

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

+0

cron всегда был доступен как часть Mac OS X (теперь как часть запуска). Это не отвечает на вопрос: cron будет работать для планирования выключения, но он не выключает сам компьютер; он все равно должен знать, что * запланировать. –

1

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

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

+0

Я не обязательно хочу потерять несохраненную работу, но я поставил себе предупреждение за 10 минут до выключения в качестве напоминания. У меня была аналогичная система с еще одним программным обеспечением, которое больше не доступно, и я не терял никакой работы через несколько месяцев. Спасибо за дополнительную информацию о полноэкранных приложениях, это интересно и полезно. –

2

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

+0

Я использую это в небольшом утилите, но, к сожалению, он не работает принудительно. Иногда я возвращаюсь к своему Mac и обнаруживаю, что он все еще работает с Firefox, и сообщение, которое сообщает мне, что Firefox прервал завершение работы. – andreb

+0

Возможно, это поможет «игнорировать ответы приложений» (или что-то подобное), но я еще не пробовал. – andreb

+0

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

1

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

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

+0

@ Leif - не беспокойтесь, это не получилось так грубо. Это замечательный комментарий. Было бы проще и безопаснее просто установить будильник, но, к сожалению, у меня есть нулевая сила воли, и я * знаю * Я бы начал говорить «О, только это одна вещь ..», и в следующий раз, когда я посмотрю часы, это будет 2am. Это просто не сработало бы для меня. Хотелось бы! –

1

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

+0

С моего вопроса: «Опция в OS X для закрытия моей машины в определенное время слишком легко отменить, и вы всегда можете вернуться в нее позже». –

 Смежные вопросы

  • Нет связанных вопросов^_^