Если есть только несколько определенных процессов, которые вы хотите завершить, вы можете использовать killall а затем использовать AppleScript, чтобы отправить loginwindow событие Apple kAEShutDown :
killall process1 process2
osascript -e 'tell app "System Events" to shut down'
Если вы хотите завершить работу без запроса сохранения несохраненных изменений и т.д., Попробуйте использовать sudo shutdown -h now . Он отправляет всем процессам сигнал TERM за которым следует сигнал KILL , что должно быть относительно безопасно даже в графических приложениях. Если приложение поддерживает внезапное завершение, предполагается, что отправлять ему сигнал KILL .
Обычно при закрытии приложения Какао завершаются вызовом applicationShouldTerminate: метод делегата, приложения не-Какао и фоновые процессы отправляются событию Apple kAEQuitApplication , а демонам отправляется сигнал TERM за которым следует сигнал KILL . См. Руководство по программированию демонов и сервисов .
Изменить: если вы хотите отключить повторное открытие приложений после перезапуска, вы можете запустить defaults -currentHost write com.apple.loginwindow TALAppsToRelaunchAtLogin -array '()' до sudo shutdown -r now . Список приложений, которые можно открыть при входе в систему, хранится в ~/Library/Preferences/ByHost/com.apple.loginwindow.*.plist .