Иногда мой компьютер дает сбой и перезагружается из-за неизвестных ошибок. Обычно это происходит, когда я работаю над чем-то, поэтому открыто несколько приложений. В OS X есть эта раздражающая функция, когда она пытается снова открыть все приложения при перезапуске. Вы можете отключить его при ручном перезапуске, но он все равно делает это, если компьютер перезагружается после сбоя.
Я думаю, что эта функция была создана для экономии времени, но все, что она делает, это тратит больше времени, чем оно того стоит, потому что всякий раз, когда компьютер перезагружается после сбоя, я обычно просто перезагружаю его еще раз (на этот раз с отключенным «Повторное открытие приложений») просто чтобы получить до работоспособного состояния. Проблема в том, что он будет продолжать создавать приложения и предотвращать перезапуск.
Отключение этой функции избавило бы меня от необходимости перезапускать после сбоя. Есть ли способ остановить OS X от этого?
Работает в macOS El Capitan, Yosemite, Sierra, High Sierra.
Решение: запретите OS X доступ к файлу, который он использует для хранения вашего состояния сеанса. Это предотвращает повторное открытие приложений даже после перезагрузки/выключения из терминала , из AppleScript и сбоя системы.
Cmd+Shift+G
(Перейти в папку)~/Library/Preferences/ByHost/
и подтвердитеcom.apple.loginwindow
Если вы хотите отменить это изменение позже и снова включить функцию, просто удалите этот файл, и ОС создаст его заново.
Cmd+Shift+G
(Перейти в папку)~/Library/Preferences/ByHost/
и подтвердитеcom.apple.loginwindow
Сделайте файл владельцем root (иначе ОС просто заменит его)
sudo chown root ~/Library/Preferences/ByHost/com.apple.loginwindow*
Удалите все разрешения, чтобы он не мог быть прочитан или записан в
sudo chmod 000 ~/Library/Preferences/ByHost/com.apple.loginwindow*
Включите повторное открытие всех приложений после входа в систему.
sudo rm -f ~/Library/Preferences/ByHost/com.apple.loginwindow*
echo > ~/Library/Preferences/ByHost/com.apple.loginwindow*
Я обнаружил, что подход @babca работает хорошо, но в macOS Catalina для меня он немного отличался. У меня было два com.apple.loginwindow.*.plist
файла, ~/Library/Preferences/ByHost/
и они не были обычным текстом — com.apple.loginwindow.AB6XXXXX-XXXX-XXXX-XXXX-XXXXXXX5291.plist
и com.apple.loginwindow.111XXXXX-XXXX-XXXX-XXXX-XXXXXXXXAC43.plist
.
Поэтому я сделал следующие два шага для каждого файла:
Открыл ( ⌘-O
) каждый Finder в XCode (я думаю, что по умолчанию в Catalina), удалил все записи в разделе TALAppsToRelaunchAtLogin
и сохранил файл.
Получил информацию ( ⌘-I
) для каждого в Finder, затем установите Locked
флажок. Обратите внимание, что окно предварительного просмотра показывает пустой <array/>
внутри файл TALAppsToRelaunchAtLogin
.
Чтобы отменить это изменение, повторите только последний шаг для каждого файла, но снимите Locked
флажок.
Я представляю другое решение, чтобы удовлетворить несколько собственных дополнительных требований, делающих его более универсальным. Требования:
С помощью кода, расположенного здесь , я придумал следующее, которое работает как минимум в sh и bash на Catalina и Big Sur...
# set user name, machine uuid, and home dir
someUser=$(stat -f%Su /dev/console)
machineUUID=$(ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}')
homeDir=$(dscacheutil -q user -a name ${someUser} | grep 'dir:' | awk '{print $2}')
# delete the plist array
/usr/libexec/PlistBuddy -c 'Delete :TALAppsToRelaunchAtLogin' ${homeDir}/Library/Preferences/ByHost/com.apple.loginwindow.${machineUUID}.plist
# make the file readonly
chflags uimmutable ${homeDir}/Library/Preferences/ByHost/com.apple.loginwindow.${machineUUID}.plist
Попробуйте удерживать нажатой, Shiftкогда увидите окно входа в систему, и отпустите ее, когда появится док-станция.
Это предотвращает запуск элементов в ваших элементах входа при входе в систему, но не предотвращает возобновление работы приложений.
Рускес
hmedia1