Я ищу сценарий, который убьет все процессы на моем Mac. Чтобы быть более конкретным, скрипт должен убить все процессы и завершить работу.


Дело в том, что я хочу завершить все процессы и перезапустить Mac OS X, но не выключать его. Я знаю, что сейчас существуют такие команды, как sudo shutdown -r now но она не работает на моем Mac (эта команда перезапускает ее, но не завершает процессы после перезагрузки).

Я не могу использовать sudo shutdown - h now потому что у меня нет доступа к моему Mac (только TeamViewer для подключения к моему Mac Mini). Поэтому я не могу нажать кнопку вкл / выкл / перезапустить.

Есть идеи как это сделать?

3 ответа3

3

Как указал Даниэль Дж., Почему вы не можете использовать

   sudo shutdown -h now

Это убьет все процессы на вашем компьютере и выключит компьютер. Почему вы должны "переписать" скрипт, который уже выполнен командой shutdown ?

2

Ну, вам нужен bash-скрипт, который получает список всех запущенных процессов и их PID, а затем использует цикл для уничтожения каждого из этих PID, таких как kill 1002 внутри цикла, после того как вы это сделаете, вы можете вызвать процесс завершения работы. Дело в том, что процесс выключения уже делает это за вас.

0

Если есть только несколько определенных процессов, которые вы хотите завершить, вы можете использовать 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .