Ordlista/Processer du kommer att se
logd
Andra namn: enhetlig loggning
Kort svar
logd är processen i macOS som kör den enhetliga loggen, systemets samlade register över vad macOS och dina appar rapporterar medan de körs. Varje process lämnar sina loggmeddelanden till logd, som komprimerar dem, håller de senaste i minnet och sparar resten i ett loggarkiv på skivan, där appen Konsol och kommandot log i Terminal läser dem.
Det finns en logd, den körs som root och launchd startar den när datorn startar. Sedan macOS Sierra hamnar de flesta meddelanden inte längre i textfiler i /var/log. Appar lämnar dem till logd, som sparar dem i ett komprimerat binärt format i /var/db/diagnostics, med den fasta texten för varje meddelande i /var/db/uuidtext. Det är därför du läser loggen med Konsol eller kommandot log i stället för att öppna en fil.
Dess processor- och skivanvändning följer hur mycket resten av datorn loggar. På en lugn Mac använder den en bråkdel av en procent. När logd ligger nära toppen av listan är det nästan aldrig logd:s eget fel: en annan process skriver meddelanden mycket snabbare än vanligt, och logd gör jobbet att spara dem.
På den här sidan
Varför logd använder så mycket CPU eller skiva
En app eller bakgrundsprocess loggar i en loop. En process som misslyckas och försöker igen många gånger i sekunden, till exempel en nätverksklient som inte når sin server, en synkronisering som har fastnat eller en drivrutin som rapporterar samma fel om och om igen, kan skriva hundratusentals meddelanden i minuten. logd komprimerar och sparar vart och ett, och dess processoranvändning och Skrivna byte stiger i takt med dem.
Extra loggning som har slagits på för felsökning har samma effekt. En loggningsprofil som installerats för en felrapport, eller en ändring gjord med kommandot log config, får logd att spara meddelanden som den normalt bara håller i minnet.
Vad du kan göra åt det
Hitta processen som översvämmar loggen och ta hand om den, inte om logd. I Terminal rangordnar log stats --last 5m processer efter hur mycket de har loggat de senaste fem minuterna. Avsluta eller uppdatera appen överst, eller starta om datorn om det är en bakgrundsprocess som har fastnat.
Om du har installerat en loggningsprofil som du inte längre behöver tar du bort den i Systeminställningar → Allmänt → Enhetshantering. Att avsluta logd hjälper inte: macOS startar den igen direkt, och processen som översvämmar loggen fortsätter.
Så hittar du processen som översvämmar loggen
Det är logd som sparar, så den användbara frågan är vem som skriver. Aktivitetskontroll visar kostnaden och Terminal visar den skyldige.
- Öppna Aktivitetskontroll, klicka på fliken Processor, välj Innehåll → Alla processer och skriv
logdi sökfältet. Notera dess % processor. - Klicka på fliken Skiva och följ Skrivna byte för logd. Ett värde som stiger snabbt betyder att den sparar en flod av meddelanden till skivan.
- Töm sökfältet och sortera fliken Processor efter % processor. Processen som översvämmar loggen är ofta själv upptagen, och den kan starta om gång på gång med ett nytt PID varje gång.
- Öppna Terminal och kör
log stats --last 5m. Under processes listas de processer som loggat mest de senaste fem minuterna, med antal händelser och byte. WindowServer och några andra systemprocesser loggar mycket på alla Mac-datorer, så leta efter en process med en ovanligt stor andel, eller en som borde vara overksam. - Om du vill läsa vad processen säger kör du
log show --last 5m --predicate 'process == "Name"', med processnamnet i stället för Name. Om du vill följa den live använder dulog streammed samma predikat, och trycker på kontroll-C för att sluta.
Normal användning av logd jämfört med ett problem
Normalt: logd ligger en bra bit under några procent av processorn, med korta ökningar när datorn startar, vaknar ur viloläge eller när många appar öppnas samtidigt.
Värt att undersöka: logd ligger nära toppen av processorlistan i flera minuter i sträck, eller dess Skrivna byte fortsätter att växa snabbt medan du gör lite. Det här är de vanliga orsakerna:
- En process som misslyckas och försöker igen i en tät loop, till exempel en nätverksklient som inte når sin server eller en synkronisering som har fastnat.
- En hjälpprocess som kraschar och startas igen direkt och loggar samma start och samma fel varje gång.
- Felsöknings- eller infologgning som slagits på med
log config, eller av en loggningsprofil som installerats för en felrapport. - En app med utförlig loggning påslagen i sina egna inställningar, eller en testversion av en app som loggar allt.
- Konsol som har lämnats med liveströmning igång, eller ett verktyg som läser liveloggen hela tiden. Den kostnaden syns mest i diagnosticd, logd:s följeslagare.
Läsa loggen i Konsol
Konsol, i Program → Verktygsprogram, visar samma logg i ett fönster. Klicka på Starta i verktygsfältet för att se meddelanden när de kommer, och skriv ett processnamn i sökfältet för att bara visa meddelanden som nämner den. När en process fyller skärmen snabbare än du hinner läsa har du hittat det logd är upptagen med.
Stoppa strömningen när du är klar. Medan Konsol visar liveloggen gör diagnosticd och processerna som loggar extra arbete, vilket är raka motsatsen till vad du vill ha på en Mac som redan är upptagen.
Frågor som folk ställer
Vad är logd på Mac?
Processen i macOS bakom den enhetliga loggen. Varje app och systemprocess skickar sina loggmeddelanden till logd, som komprimerar och sparar dem så att Konsol och kommandot log kan visa dem.
Varför använder logd mycket CPU?
Nästan alltid för att en annan process skriver loggmeddelanden i en loop, och logd måste spara alla. Kör log stats --last 5m i Terminal för att se vilken process som loggar mest.
Kan jag radera loggarna som logd sparar?
Det kan du, men det finns sällan någon anledning. macOS rensar gamla meddelanden av sig självt när loggarkivet når sin storleksgräns, så det växer inte i all oändlighet. Om du behöver tömma det tar sudo log erase --all bort de sparade meddelandena, tillsammans med historiken som du eller Apple Support skulle behöva för att felsöka ett problem. Radera inte /var/db/diagnostics eller /var/db/uuidtext för hand.
Vad är diagnosticd på Mac?
En annan del av det enhetliga loggsystemet. logd sparar meddelanden, och diagnosticd levererar dem live till Konsol och till log stream. Den använder mer CPU bara medan någon av dem visar liveloggen.
Är det säkert att avsluta logd?
Det gör ingen bestående skada, eftersom macOS startar den igen direkt, men det gör ingen nytta heller. Processen som översvämmade loggen fortsätter, och logd tar upp arbetet igen så fort den har startat om.
Relaterat
Letar du efter något bättre än Aktivitetskontroll? Läs om de bästa alternativen till Aktivitetskontroll för Mac, eller bläddra bland alla begrepp i ordlistan.