Меня больше интересует использование терминала в качестве альтернативного способа решения проблем на моем Mac. Я видел этот вопрос под названием «Есть ли лучший способ выключить / перезапустить OSX?» ,
Поэтому я хотел бы знать:
Как выключить, перезагрузить и перевести мой Mac с помощью исключительно команды терминала?
Ответы:
Команда, которую вы ищете, выключается . Это информирует всех пользователей о том, что машина будет выключена, и сообщает всем приложениям о необходимости закрытия файлов и т. Д.
Команда принимает параметр -h, -r или -s для выключения, перезагрузки или отключения компьютера Mac.
Команда должна быть запущена от имени пользователя root, поэтому вам нужно использовать sudo.
например, перезагрузить машину немедленно
например, чтобы выключить машину через 60 минут
Из комментариев есть две вещи для решения
Как работает завершение работы, отправляя сигтерм всем процессам, которые затем должны иметь дело с этим, например, сохранять открытые файлы и т. Д. Если они не выходят, то им отправляется сигнал SIGKILL, который вынуждает их умереть без возможности ответить. Сигналы не отправляются через обычную ключевую очередь сообщений, поэтому приложения должны иметь дело с этим отдельно от кода, который вызывается при выходе из меню. Хорошее приложение должно вызывать общий код из обоих.
Этот другой ответ показывает, как завершить работу, как если бы вы нажали пункты меню. Но обратите внимание, что приложения могут отменить это завершение работы
источник
/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend
. У меня есть псевдоним в файле, который получен в моем .bash_profile следующим образом:alias lock='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
Завершите работу, не показывая диалоговое окно подтверждения:
Завершите работу после отображения диалогового окна подтверждения:
Перезапустите, не показывая диалоговое окно подтверждения:
Перезапустите после отображения диалогового окна подтверждения:
Выйдите из системы, не показывая диалоговое окно подтверждения:
Выйдите из системы после отображения диалогового окна подтверждения:
Иди спать (
pmset
):Иди спать (AppleScript):
Переведите дисплеи в спящий режим (10.9 и более поздние версии):
Четырехбуквенные коды для событий Apple перечислены в
AERegistry.h
.Все приведенные выше команды системных событий отправляют события Apple
loginwindow
процессу.loginwindow
отправляется те же события Apple, что и выше, когда вы выходите из системы, перезагружаетесь, выключаетесь или переводите компьютер в нормальный режим сна. См. Технические вопросы и ответы QA1134: программно вызывает перезапуск, отключение и / или выход из системы .Согласно
man shutdown
,shutdown -h now
иshutdown -r now
отправка обрабатываетTERM
сигнал, за которым следуетKILL
сигнал.Согласно Руководству по программированию Daemons and Services , когда вы говорите
loginwindow
выйти из системы, процессам, которые поддерживают внезапное завершение, отправляетсяKILL
сигнал, а процессы, которые не поддерживают внезапное завершение, завершаются различными способами: приложения какао получаютapplicationShouldTerminate:
метод делегата, приложения переднего плана получаютkAEQuitApplication
событие Apple, фоновые приложения получаютkAEQuitApplication
событие Apple, за которым следуетKILL
сигнал, а демоны получаютTERM
сигнал, за которым следуетKILL
сигнал через несколько секунд.источник
Выключение немедленно:
Если вы чувствуете, что хотите задержать выключение, вы можете использовать следующий синтаксис команды:
(-h параметр установить время выключения, где (+) 30 минут для остановки системы)
источник
также полезно, чтобы выйти из командной строки терминала, введите 'exit':
источник
Ctrl-D
выходить из системы, так как это не засоряет историю командной строки.