Завершите работу, не показывая диалоговое окно подтверждения:
osascript -e 'tell app "System Events" to shut down'
Завершите работу после отображения диалогового окна подтверждения:
osascript -e 'tell app "loginwindow" to «event aevtrsdn»'
Перезапустите, не показывая диалоговое окно подтверждения:
osascript -e 'tell app "System Events" to restart'
Перезапустите после отображения диалогового окна подтверждения:
osascript -e 'tell app "loginwindow" to «event aevtrrst»'
Выйдите из системы, не показывая диалоговое окно подтверждения:
osascript -e 'tell app "System Events" to «event aevtrlgo»'
Выйдите из системы после отображения диалогового окна подтверждения:
osascript -e 'tell app "System Events" to log out'
Иди спать ( pmset):
pmset sleepnow
Иди спать (AppleScript):
osascript -e 'tell app "System Events" to sleep'
Переведите дисплеи в спящий режим (10.9 и более поздние версии):
pmset displaysleepnow
Четырехбуквенные коды для событий 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сигнал через несколько секунд.