Snabba upp avstängningsprocessen i OS X

När du stänger av din Mac försöker OS X att avsluta program och bakgrundstjänster på ett rent sätt. Under vissa omständigheter kan det emellertid ta exceptionellt lång tid, så att systemet väntar i minuter innan det slutar sluta. Ibland är det systemet som väntar på en interaktion, till exempel att du sparar ett dokument, men i andra tider beror det på att bakgrundstjänsterna slutat svara och systemet väntar en bestämd tid innan de tvingas sluta.

Vanligtvis bör OS X ta bara några sekunder att stänga av, så om ditt system konsekvent tar lång tid, föreslår det ett problem som behöver åtgärdas. Ibland kan det helt enkelt vara en problematisk kringutrustning eller två, eller det kan vara en del felaktig konfiguration av ditt system. I dessa fall borde du försöka med några grundläggande felsökningsförfaranden för att identifiera och åtgärda problemet.

Men om du stöter på långa avstängningar regelbundet men med mer slumpmässiga intervaller, kan de vara situationella och kan orsakas av att systemet väntar på några bakgrundsprocesser att avsluta.

Som standard väntar systemet på att bakgrundsprocesser slutar på egen hand, men om inte så skickar det sådana processer en dödsignal efter 20 sekunder, och om dessa processer utspelar sig med olika intervaller, kan detta förlänga en avstängning till en antal minuter.

Därför kan det hända att för vissa bakgrundsprocesser som brukar hänga upp mer än andra, så ändrar du bara denna standard 20 sekunders till ett lägre värde systemet att avsluta dessa processer tidigare. Medan tvinga processer att sluta inte är den bästa praxisen, växlar systemet redan upp till detta under avstängning. Återigen tillåter OS X bara processen att ta ett 20-sekunders fönster ut och då kommer systemet att döda processen kraftigt.

Bakgrundstjänsterna som verkar vara vanliga synder i sådana tidsavbrott är de som hanterar kommunikationsprocesser, autentiseringshantering och disk- och nätverksresursaktivitet. I OS X ingår följande:

  • AppleEvents - Detta gör det möjligt för processer att kommunicera med och beordra varandra (och ligger till grund för AppleScript). Det kan leda till att avbrott i interprocesskommunikation (till exempel om en process tvingas sluta när händelserna hanteras) kan komma ifrån.
  • securityd - Det här hanterar åtkomst till nyckelringar och andra säkerhetsbehörigheter, och det kan vara dags att vänta på användarinteraktion för någon autentiseringsbegäran.
  • mDNSResponder - Hanterar multicast DNS-åtgärder, inklusive automatisk upptäckt av nätverksservrar och -tjänster. Det kan leda till problem med lokalnätverkskonfigurationen.
  • diskarbitrationd - Diskarbitratorn övervakar montering och tillgänglighet av lokala filsystem och kan leda till ett fel i de enheter som används, eller om en enhet går offline eller i viloläge och tar ett tag att vakna.
  • Apple ID-autentisering - hanterar verifieringen av ditt Apple-ID för olika tjänster; kan leda till dålig nätverksåtkomst eller brist på svar från Apples servrar.

Hanteringen av dessa processers tidsavbrott görs av systemlanseringsprocessen, som håller 20-sekunders standard-timeout för processer. Genom att instruera startprogrammet att förkorta denna period även med hälften, kan du påskynda avsevärt avstängningar som försvinner på grund av dessa processer.

För att ändra tidsavbrott måste du ändra lanseringsdemonfilerna som systemet använder för dessa tjänster, så var noga med att du har en säkerhetskopia av ditt system och kör sedan följande kommandon, som du kan kopiera och klistra in (varje kommando är två rader) till OS X Terminal-verktyget (i mappen Program> Verktyg):

sudo standardvärden skriv / System / Bibliotek / LaunchDaemons / c \

om.apple.coreservices.appleevents ExitTimeOut -int 5

sudo standardvärden skriv / System / Bibliotek / LaunchDaemons / c \

om.apple.securityd ExitTimeOut -int 5

sudo standardvärden skriv / System / Bibliotek / LaunchDaemons / c \

om.apple.mDNSResponder ExitTimeOut -int 5

sudo standardvärden skriv / System / Bibliotek / LaunchDaemons / c \

om.apple.diskarbitrationd ExitTimeOut -int 5

sudo standardvärden skriv / System / Bibliotek / LaunchAgents / com. \

apple.coreservices.appleid.authentication ExitTimeOut -int 5

I dessa kommandon som skrivits ovan är tidsgränsvärdet inställt på "5", vilket betyder att systemet väntar 5 sekunder innan man avlivar en process under avstängning, men du kan ändra detta till ett heltal värde som är större än noll (ett värde av noll inaktiverar timeout, så det skulle vänta på obestämd tid). Observera att det här är "sudo" -kommandon, vilket betyder att när du kör den första måste du ange ditt administratörslösenord (som inte visas i terminalen när du blir ombedd), men behöver inte ange lösenordet för följande kommandon .

Klistra in båda raderna av varje kommando som anges ovan i Terminal, ändra värdet 5 till ett annat nummer om du vill (du kan köra kommandona igen när som helst med olika värden). När du är klar startar du om datorn och ser om det här förbättrar dina avstängningstider eller inte.

För att ångra dessa åtgärder kan du köra kommandona igen men med ett värde av 20, eller du kan köra följande kommandon för att ta bort inställningsinställningen "ExitTimeOut", som vanligtvis inte ingår i dessa startdemon och agentskript:

sudo standardvärden delete / System / Library / LaunchDaemons / c \

om.apple.coreservices.appleevents ExitTimeOut

sudo standardvärden delete / System / Library / LaunchDaemons / c \

om.apple.securityd ExitTimeOut

sudo standardvärden delete / System / Library / LaunchDaemons / c \

om.apple.mDNSResponder ExitTimeOut

sudo standardvärden delete / System / Library / LaunchDaemons / c \

om.apple.diskarbitrationd ExitTimeOut

sudo standardvärden delete / System / Library / LaunchAgents / com \

.apple.coreservices.appleid.authentication ExitTimeOut


 

Lämna Din Kommentar