Вимкніть, не показуючи діалогове вікно підтвердження:
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при виході, перезапуску, вимкненні або переведенні Mac у режим нормального сну надсилаються ті самі події 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сигнал проходить через кілька секунд.