Fremskynde afbrydelsesprocessen i OS X

Når du lukker din Mac, vil OS X forsøge at afslutte programmer og baggrundstjenester på en ren måde. Under visse omstændigheder kan det imidlertid tage en usædvanlig lang tid, så systemet venter i minutter, før det endelig lukkes ned. Nogle gange er det systemet, der venter på en interaktion, som f.eks. Du gemmer et dokument, men det er andre gange, fordi baggrundstjenesterne ikke længere svarer, og systemet venter en forudbestemt tid, før de tvinger dem til at afslutte.

Generelt skal OS X kun tage et par sekunder at lukke ned, så hvis dit system konsekvent tager lang tid, foreslår det et problem, der skal løses. Nogle gange kan dette simpelthen være en problematisk perifer enhed eller to, eller det kan være fra en fejl i konfigurationen af ​​dit system. I disse tilfælde bør du forsøge nogle grundlæggende fejlfindingsprocedurer for at hjælpe med at identificere og løse problemet.

Men hvis du støder på lange afbrydelser regelmæssigt, men med flere tilfældige intervaller, kan de være situationsmæssige og kan skyldes, at systemet venter på nogle baggrundsprocesser for at afslutte.

Systemet vil som standard vente på, at baggrundsprocesserne slutter alene, men hvis ikke, så vil det sende sådanne processer et dræbningssignal efter 20 sekunder, og hvis disse processer timer ud med forskellige intervaller, kan dette forlænge en shutdown til en antal minutter.

Derfor er det for nogle baggrundsprocesser, der har tendens til at holde op mere end andre, simpelthen at ændre denne standard 20 sekunders tid til en lavere værdi, at systemet forlader disse processer tidligere. Mens tvinge processer til at afslutte ikke er den bedste praksis, er systemet allerede klar til at gøre dette under afbrydelse. Igen giver OS X kun processen et 20-sekunders vindue for at afslutte, og så vil systemet dræbe processen kraftigt.

Baggrundstjenesterne, der synes at være almindelige syndere i sådanne timeouts, er dem, der håndterer kommunikationsprocesser, godkendelsesstyring og disk- og netværksressourceaktivitet. I OS X omfatter disse følgende:

  • AppleEvents - Dette giver processer mulighed for at kommunikere med og kommandere hinanden (og er grundlaget for AppleScript). Det kan gå ud af afbrydelser i interprocess kommunikation (for eksempel hvis en proces er tvunget til at afslutte, når begivenheder forvaltes).
  • securityd - Dette styrer adgangen til nøgleringe og andre sikkerhedsgodkendelser, og det kan muligvis afbryde, hvis der ventes på brugerinteraktion for en vis godkendelsesforespørgsel.
  • mDNSResponder - Styrer multicast DNS-handlinger, herunder automatisk opdagelse af netværksservere og -tjenester. Dette kan gå ud af problemer med lokalnetværkskonfigurationen.
  • diskarbitrationd - Diskarbitratoren overvåger montering og tilgængelighed af lokale filsystemer, og kan udvise en fejl i de drev, der bruges, eller hvis et drev går offline eller i dvaletilstand og tager et stykke tid at vågne op.
  • Apple ID-godkendelse - styrer verificeringen af ​​dit Apple-id til forskellige tjenester; kan være ude af dårlig adgang til nettet eller manglende respons fra Apples servere.

Forvaltningen af ​​disse processers timeout udføres af system launcher proces launchd, som holder 20-sekunders standard timeout for processer. Ved at instruere lanceringen til at forkorte denne periode endog halvdelen, kan du betydeligt fremskynde nedlukninger, der slæber på grund af disse processer.

For at ændre timeouterne skal du ændre de startdemonfiler, systemet anvender til disse tjenester. Sørg for først at du har en sikkerhedskopi af dit system, og kør derefter følgende kommandoer, som du kan kopiere og indsætte (hver kommando er to linjer) i OS X Terminal-værktøjet (i mappen Applications> Utilities):

sudo standardindstillinger skriv / System / Library / LaunchDaemons / c \

om.apple.coreservices.appleevents ExitTimeOut -int 5

sudo standardindstillinger skriv / System / Library / LaunchDaemons / c \

om.apple.securityd ExitTimeOut -int 5

sudo standardindstillinger skriv / System / Library / LaunchDaemons / c \

om.apple.mDNSResponder ExitTimeOut -int 5

sudo standardindstillinger skriv / System / Library / LaunchDaemons / c \

om.apple.diskarbitrationd ExitTimeOut -int 5

sudo standardindstillinger skriv / System / Library / LaunchAgents / com. \

apple.coreservices.appleid.authentication ExitTimeOut -int 5

I disse kommandoer som beskrevet ovenfor er timeout-værdien indstillet til "5", hvilket betyder, at systemet venter 5 sekunder, før du dræber en proces under afbrydelse, men du kan ændre dette til en heltalsværdi større end nul (en værdi på nul deaktiverer timeout, så det ville vente på ubestemt tid). Bemærk, at disse er "sudo" -kommandoer, hvilket betyder, at når du kører den første skal du give din administratoradgangskode (som ikke vises i Terminal, når du bliver bedt om det), men så behøver du ikke at angive adgangskoden til de efterfølgende kommandoer .

Indsæt begge linjer i hver kommando, der er angivet ovenfor, i Terminal, ændrer værdien af ​​5 til et andet nummer, hvis du ønsker det (du kan køre kommandoerne igen til enhver tid med forskellige værdier). Når du er færdig, skal du genstarte din computer, og derefter se, om dette forbedrer dine afbrydelsestider eller ej.

For at fortryde disse handlinger kan du køre kommandoer igen, men med en værdi på 20, eller du kan køre følgende kommandoer for at fjerne indstillingen "ExitTimeOut" indstillinger, som som standard ikke er inkluderet i disse startdemon og agent scripts:

sudo standardindstillinger slet / System / Library / LaunchDaemons / c \

om.apple.coreservices.appleevents ExitTimeOut

sudo standardindstillinger slet / System / Library / LaunchDaemons / c \

om.apple.securityd ExitTimeOut

sudo standardindstillinger slet / System / Library / LaunchDaemons / c \

om.apple.mDNSResponder ExitTimeOut

sudo standardindstillinger slet / System / Library / LaunchDaemons / c \

om.apple.diskarbitrationd ExitTimeOut

sudo standardindstillinger slet / System / Library / LaunchAgents / com \

.apple.coreservices.appleid.authentication ExitTimeOut


 

Efterlad Din Kommentar