Fremskynde nedleggingsprosessen i OS X

Når du slår av Macen, forsøker OS X å avslutte programmer og bakgrunnstjenester på en ren måte. Under noen omstendigheter kan dette imidlertid ta en svært lang tid, slik at systemet venter i minutter før det endelig slås av. Noen ganger er dette systemet venter på en interaksjon, for eksempel du lagrer et dokument, men det er andre ganger fordi bakgrunnstjenestene har sluttet å svare, og systemet venter en forhåndsbestemt tid før de tvinger dem til å slutte.

Vanligvis bør OS X bare ta noen sekunder å slå av, så hvis systemet tar konsekvent lang tid, foreslår det et problem som må løses. Noen ganger kan dette bare være en problematisk perifer enhet eller to, eller det kan være en feilaktig konfigurasjon av systemet ditt. I slike tilfeller bør du forsøke noen grunnleggende feilsøkingsprosedyrer for å identifisere og løse problemet.

Men hvis du støter på lange nedleggelser regelmessig, men med flere tilfeldige intervaller, kan de være situasjonelle og kan forårsakes av at systemet venter på noen bakgrunnsprosesser for å avslutte.

Systemet vil som standard vente på at bakgrunnsprosessene skal ende opp på egenhånd, men hvis ikke, vil det sende slike prosesser et drapssignal etter 20 sekunder, og hvis disse prosessene utløper med ulike intervaller, kan dette utvide en nedleggelse til en antall minutter.

Derfor, for noen bakgrunnsprosesser som har en tendens til å henge opp mer enn andre, vil det bare føre til at systemet går ut av disse prosessene tidligere, ved å endre denne standard 20 sekunders tid til en lavere verdi. Mens tvinge prosesser til å slutte, er ikke den beste øvelsen, er systemet allerede i ferd med å gjøre dette under nedleggelse. Igjen, OS X tillater bare prosessen et 20 sekunders vindu for å gå ut, og da vil systemet drepe prosessen kraftig.

Bakgrunnstjenestene som synes å være vanlige syndere i slike tidsavbrudd, er de som håndterer kommunikasjonsprosess, autentiseringsadministrasjon og disk- og nettverksressursaktivitet. I OS X inkluderer disse følgende:

  • AppleEvents - Dette tillater prosesser å kommunisere med og kommandere hverandre (og er grunnlaget for AppleScript). Det kan gå ut av avbrudd i interprosess kommunikasjon (for eksempel hvis en prosess er tvunget til å slutte når hendelser blir forvaltet).
  • securityd - Dette styrer tilgang til nøkkelringer og andre sikkerhetsgodkjenninger, og kan kaste bort hvis du venter på brukerinteraksjon for noen autentiseringsforespørsel.
  • mDNSResponder - Administrerer multicast DNS-handlinger, inkludert automatisk oppdagelse av nettverksservere og -tjenester. Dette kan komme seg ut av problemer med lokalnettverkskonfigurasjonen.
  • diskarbitrationd - Diskkarbitratoren overvåker montering og tilgjengelighet av lokale filsystemer, og kan gå ut av en feil i stasjonene som brukes, eller hvis en stasjon går offline eller i hvilemodus og tar en stund å våkne opp.
  • Apple ID-godkjenning - styrer verifiseringen av Apple-ID-en din for ulike tjenester; kan gå ut av dårlig nettverkstilgang eller mangel på respons fra Apples servere.

Administrasjonen av disse prosessens tidsavbrudd er utført av systemstarterprosessen, som holder 20-sekunders standard-timeout for prosesser. Ved å instruere lanseringsprogrammet om å forkorte denne perioden til og med halvparten, kan du øke hastigheten på nedleggelser som slenger på grunn av disse prosessene.

For å endre tidsavbrudd må du endre startdemonfiler systemet bruker for disse tjenestene, så vær sikker på at du har en sikkerhetskopi av systemet, og kjør deretter kommandoer som du kan kopiere og lime inn (hver kommando er to linjer) til OS X Terminal-verktøyet (i mappen Programmer> Verktøy):

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

om.apple.coreservices.appleevents ExitTimeOut -int 5

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

om.apple.securityd ExitTimeOut -int 5

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

om.apple.mDNSResponder ExitTimeOut -int 5

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

om.apple.diskarbitrationd ExitTimeOut -int 5

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

apple.coreservices.appleid.authentication ExitTimeOut -int 5

I disse kommandoene som beskrevet ovenfor er tidsavbruddsverdien satt til "5", noe som betyr at systemet venter 5 sekunder før du dreper en prosess under nedleggelse, men du kan endre dette til en helt verdi som er større enn null (en verdi på null deaktiverer timeout, så det ville vente på ubestemt tid). Vær oppmerksom på at disse er "sudo" -kommandoer, som betyr at når du kjører den første, må du oppgi administratorpassordet ditt (som ikke vises i Terminal når du blir bedt om det), men da trenger du ikke å oppgi passordet for de påfølgende kommandoene .

Lim inn begge linjene i hver kommando som er angitt ovenfor i Terminal, endrer verdien av 5 til et annet nummer hvis du ønsker det (du kan kjøre kommandoene igjen når som helst med forskjellige verdier). Når du er ferdig, start datamaskinen på nytt, og se om dette forbedrer avslutningstider eller ikke.

Hvis du vil angre disse handlingene, kan du kjøre kommandoene igjen, men med en verdi på 20, eller du kan kjøre følgende kommandoer for å fjerne innstillingsoppføringen "ExitTimeOut", som ikke er inkludert i disse startdemonene og agentskriptene:

sudo standardinnstillinger slette / System / Library / LaunchDaemons / c \

om.apple.coreservices.appleevents ExitTimeOut

sudo standardinnstillinger slette / System / Library / LaunchDaemons / c \

om.apple.securityd ExitTimeOut

sudo standardinnstillinger slette / System / Library / LaunchDaemons / c \

om.apple.mDNSResponder ExitTimeOut

sudo standardinnstillinger slette / System / Library / LaunchDaemons / c \

om.apple.diskarbitrationd ExitTimeOut

sudo standard sletter / System / Library / LaunchAgents / com \

.apple.coreservices.appleid.authentication ExitTimeOut


 

Legg Igjen Din Kommentar