Przyspiesz proces zamykania systemu OS X

Po zamknięciu komputera Mac OS X będzie próbował zamknąć programy i usługi w tle; jednak w pewnych okolicznościach może to zająć wyjątkowo dużo czasu, aby system czekał na minuty przed ostatecznym wyłączeniem. Czasami jest to system czekający na interakcję, na przykład zapisywanie dokumentu, ale innym razem jest to spowodowane tym, że usługi w tle przestały odpowiadać, a system czeka z góry określony czas, zanim zmusi ich do zakończenia pracy.

Zwykle zamknięcie systemu OS X zajmuje tylko kilka sekund, więc jeśli system konsekwentnie zajmuje dużo czasu, sugeruje to problem, który należy rozwiązać. Czasami może to być po prostu problematyczne urządzenie peryferyjne lub dwa, lub może to być spowodowane błędną konfiguracją systemu. W takich przypadkach należy spróbować podstawowych procedur rozwiązywania problemów, aby zidentyfikować i rozwiązać problem.

Jeśli jednak regularnie, ale w bardziej losowych odstępach czasu, często występują przerwy w działaniu, mogą one być sytuacyjne i mogą być spowodowane przez system oczekujący na pewne procesy w tle, aby zakończyć.

Domyślnie system będzie czekał na zakończenie procesów w tle, ale jeśli nie, to wyśle ​​takie sygnały zabicia po 20 sekundach, a jeśli te procesy przekroczą limit czasu w różnych odstępach czasu, może to spowodować zamknięcie do liczba minut.

Dlatego w przypadku niektórych procesów działających w tle, które mają tendencję do zawieszania się w większym stopniu niż inne, po prostu zmiana domyślnego czasu 20-sekundowego na niższą wartość spowoduje, że system opuści te procesy wcześniej. Podczas gdy wymuszanie zamykania procesów nie jest najlepszą praktyką, system już przygotowuje się do tego podczas zamykania systemu. Znowu system OS X zezwala tylko na proces, w którym 20-sekundowe okno wychodzi, a następnie system zdecydowanie zabije proces.

Usługi w tle, które wydają się być częstymi winowajcami w takich limitach czasu, to te, które obsługują komunikację międzyprocesową, zarządzanie uwierzytelnianiem oraz aktywność zasobów dyskowych i sieciowych. W OS X są to:

  • AppleEvents - Umożliwia to procesom komunikowanie się i przekazywanie sobie nawzajem (i jest podstawą AppleScript). Może upłynąć czas oczekiwania na przerwanie komunikacji międzyprocesowej (na przykład, jeśli jeden proces jest zmuszony zakończyć działanie, gdy zdarzenia są zarządzane).
  • securityd - Zarządza dostępem do pęku kluczy i innych uprawnień bezpieczeństwa, i może przestać działać, jeśli czeka na interakcję z użytkownikiem dla niektórych żądań uwierzytelnienia.
  • mDNSResponder - zarządza działaniami DNS w multiemisji, w tym automatycznym wykrywaniem serwerów i usług sieciowych. Może to spowodować problemy z konfiguracją sieci lokalnej.
  • diskarbitrationd - Arbiter dysku monitoruje montowanie i dostępność lokalnych systemów plików i może przestać działać z powodu awarii używanych napędów lub gdy dysk przechodzi w tryb offline i przechodzi w tryb uśpienia, a jego obudzenie zajmuje trochę czasu.
  • Identyfikacja Apple ID - zarządza weryfikacją identyfikatora Apple ID dla różnych usług; może przestać korzystać ze słabego dostępu do sieci lub braku reakcji serwerów firmy Apple.

Zarządzanie limitami czasu tych procesów odbywa się przez uruchomienie procesu uruchamiania systemu, który przechowuje 20-sekundowy domyślny limit czasu dla procesów. Dzięki poleceniu programowi uruchamiającemu skrócenie tego okresu nawet o połowę, można znacznie przyspieszyć przestoje, które są opóźnione z powodu tych procesów.

Aby zmienić limity czasu, musisz zmodyfikować pliki demona uruchamiania, które system używa dla tych usług, więc najpierw upewnij się, że masz kopię zapasową systemu, a następnie uruchom następujące polecenia, które można kopiować i wklejać (każde polecenie jest dwie linie) do narzędzia Terminal OS X (w folderze Aplikacje> Narzędzia):

sudo domyślnie zapisuje / System / Library / LaunchDaemons / c \

om.apple.coreservices.appleevents ExitTimeOut -int 5

sudo domyślnie zapisuje / System / Library / LaunchDaemons / c \

om.apple.securityd ExitTimeOut -int 5

sudo domyślnie zapisuje / System / Library / LaunchDaemons / c \

om.apple.mDNSResponder ExitTimeOut -int 5

sudo domyślnie zapisuje / System / Library / LaunchDaemons / c \

om.apple.diskarbitrationd ExitTimeOut -int 5

sudo domyślnie zapisuje / System / Library / LaunchAgents / com. \

apple.coreservices.appleid.authentication ExitTimeOut -int 5

W tych poleceniach jak napisano powyżej, wartość limitu czasu jest ustawiona na "5", co oznacza, że ​​system będzie czekał 5 sekund przed zabiciem procesu podczas zamykania, ale możesz zmienić to na dowolną liczbę całkowitą większą od zera (wartość zero wyłącza timeout, więc będzie czekać w nieskończoność). Zauważ, że są to polecenia "sudo", co oznacza, że ​​kiedy uruchomisz pierwsze, będziesz musiał podać hasło administratora (które nie pojawi się w Terminalu, gdy zostaniesz o to poproszony), ale wtedy nie będziesz musiał podawać hasła dla kolejnych poleceń .

Wklej oba wiersze każdego polecenia podanego powyżej do Terminalu, zmieniając wartość 5 na inny numer, jeśli chcesz (możesz ponownie uruchamiać polecenia w dowolnym momencie z różnymi wartościami). Po zakończeniu uruchom ponownie komputer, a następnie sprawdź, czy to poprawia czasy przestoju.

Aby cofnąć te akcje, można ponownie uruchomić komendy, ale z wartością 20 lub można uruchomić następujące polecenia, aby usunąć wpis ustawień "ExitTimeOut", który domyślnie nie jest zawarty w demonie uruchamiania i skryptach agenta:

sudo domyślnie usuwa / System / Library / LaunchDaemons / c \

om.apple.coreservices.appleevents ExitTimeOut

sudo domyślnie usuwa / System / Library / LaunchDaemons / c \

om.apple.securityd ExitTimeOut

sudo domyślnie usuwa / System / Library / LaunchDaemons / c \

om.apple.mDNSResponder ExitTimeOut

sudo domyślnie usuwa / System / Library / LaunchDaemons / c \

om.apple.diskarbitrationd ExitTimeOut

sudo domyślnie usuwa / System / Library / LaunchAgents / com \

.apple.coreservices.appleid.authentication ExitTimeOut


 

Zostaw Swój Komentarz