Как ускорить процесс завершения работы в OS X

Относится к категориям: Apple, Mac, OS X
Владимир Ш.
Когда вы выключаете Мак, OS X будет пытаться выйти из фоновых программ и сервисов; однако, в некоторых случаях это может занять очень много времени, так что система ожидает несколько минут, прежде чем окончательно завершит работу.  Иногда система ждёт, когда вы сохраните открытый документ, но в других случаях это происходит потому, что фоновые службы перестали отвечать и система ждет определенное количество времени, прежде чем принудительно их закрыть.

Вообще у OS X должно занять всего несколько секунд, чтобы выключиться, так что если выключение системы занимает много времени - это указывает на проблемы, которые необходимо решить. Иногда это может быть просто проблемное периферийное устройство, или это может быть из-за неисправной конфигурации системы. В этих случаях вы должны попытаться выполнить некоторые основные процедуры устранения неполадок , чтобы помочь определить и устранить проблему.

Тем не менее, если вы сталкиваетесь с длительным отключением регулярно, но это происходит не всегда, то причина может быть временной и может быть вызвана системой ожидания выхода из некоторых фоновых процессов.

По умолчанию, система будет ожидать самостоятельного завершения фоновых процессов, но если этого не происходит, то она будет посылать таким процессам сигнал завершения через 20 секунд, и если эти процессы долго не отвечают, это может продлить выключение на несколько минут.

Таким образом, для некоторых фоновых процессов, которые имеют тенденцию подвисать больше, чем другие, можно просто изменить это значение в 20 секунд по умолчанию на более низкое значение, что приведет к тому, чтобы закрывать эти процессы раньше. В то время как принудительно заставлять процесс завершаться не лучшая практика, система уже готовится делать это при завершении работы. Опять же, OS X только даёт процессу 20-секундное окно, чтобы завершиться и затем система закроет его насильно.

Фоновые службы, которые более других виновны в таких тайм-аутах - это те, которые обрабатывают взаимодействия процессов, управляют аутентификацией, дисковой активностью и сетевыми ресурсами. В OS X - это следующие процессы:
  • AppleEvents - он позволяет процессам общаться и командовать друг другом (и является основой для AppleScript). Он может тормозить из-за перерывов в межпроцессном взаимодействии.
  • securityd - управляет доступом к цепочкам символов и другим элементам безопасности, а также может тормозить, если ожидает взаимодействия с пользователем при некотором запросе аутентификации.
  • mDNSResponder - управляет многоадресными действиями DNS, в том числе автоматическим обнаружением сетевых серверов и сервисов. Он может тормозить из-за проблем с конфигурацией локальной сети.
  • diskarbitrationd - арбитр дисков контролирует монтирование и доступность локальных файловых систем и может тормозить из-за неисправностей в используемых приводах, или если диск переходит в автономный или в спящий режим и ему требуется время, чтобы проснуться.
  • Apple ID authentication - управляет проверкой Apple ID для различных сервисов; может подвисать из-за плохого доступа в сеть или отсутствия ответа от серверов Эпл.

Управление тайм-аутами этих процессов осуществляется системным процессом запуска программ (лаунчером), который держит 20-секундный тайм-аут по умолчанию для процессов. Поручив лаунчеру сократить этот срок даже на половину, вы можете значительно ускорить отключение, которое тормозит из-за вышеперечисленных процессов.

Чтобы изменить тайм-ауты вам нужно изменить файлы демона запуска, который система использует для этих сервисов, поэтому сначала убедитесь, что вы сделали резервную копию системы, а затем выполните следующие команды, которые вы можете скопировать и вставить (каждая команда в две строки) в утилиту "Терминал" в OS X (в разделе Приложения>Служебные программы):

 sudo defaults write /System/Library/LaunchDaemons/c\
 om.apple.coreservices.appleevents ExitTimeOut -int 5

 sudo defaults write /System/Library/LaunchDaemons/c\
 om.apple.securityd ExitTimeOut -int 5

 sudo defaults write /System/Library/LaunchDaemons/c\
 om.apple.mDNSResponder ExitTimeOut -int 5

 sudo defaults write /System/Library/LaunchDaemons/c\
 om.apple.diskarbitrationd ExitTimeOut -int 5

 sudo defaults write /System/Library/LaunchAgents/com.\
 apple.coreservices.appleid.authentication ExitTimeOut -int 5

В этих командах, как написано выше, значение тайм-аута установлено на "5", значит система будет ждать 5 секунд, прежде чем убить процесс во время завершения работы, но вы можете изменить его на любое целое число больше нуля (Нулевое значение запрещает тайм-аут вообще, поэтому будет ждать бесконечно). Заметим, что это команда "sudo", что означает что, когда вы запускаете её в первый раз, надо будет ввести пароль администратора (который не будет отображаться в терминале при появлении запроса), но тогда не нужно будет вводить пароль для последующих команд .

Вставьте обе строки каждой команды, приведенные выше в Терминал, изменяя значение 5 на другое число, если вы хотите (вы можете запустить команды снова в любое время с разными значениями). Когда закончите, перезагрузите компьютер, а затем посмотрите, действительно ли это улучшает время выключения.

Чтобы отменить эти действия, вы можете запустить команду снова, но со значением 20, или вы можете выполнить следующие команды, чтобы удалить тайм-аут выхода, который по умолчанию не включен в этот демон запуска и скрипты:

 sudo defaults delete /System/Library/LaunchDaemons/c\
 om.apple.coreservices.appleevents ExitTimeOut

 sudo defaults delete /System/Library/LaunchDaemons/c\
 om.apple.securityd ExitTimeOut

 sudo defaults delete /System/Library/LaunchDaemons/c\
 om.apple.mDNSResponder ExitTimeOut

 sudo defaults delete /System/Library/LaunchDaemons/c\
 om.apple.diskarbitrationd ExitTimeOut

 sudo defaults delete /System/Library/LaunchAgents/com\
 .apple.coreservices.appleid.authentication ExitTimeOut
Комментариев - 0
Рейтинг - 2395 баллов
 
Похожие статьи на сайте:
 
Комментариев: 0
 
Имя *:

E-mail:

Текст комментария *: