Felsöka Mac Apps på gammaldags sätt med POSIX-signaler
I Activity Monitor finns ett kryptiskt menyalternativ till Skicka signal till process. Har du någonsin undrat vad det var? Om du markerar det ser du dunkla termer som SIGINT och SIGHUP, vilket inte exakt rensar upp saker. Så vad exakt är dessa signaler?
Dessa signaler är resultatet av Unix-grunden Mac OS X Yosemite, från perspektivet av en Linux-användare Mac OS X Yosemite, från perspektivet av en Linux-användare Mac OS X används som affischbarn för ett rent och elegant gränssnitt. Som Linux-författare är det min plikt att göra jämförelser mellan Linux distros, men också mot tävlingen. Läs mer i hjärtat av macOS. Terminal har några av dessa signaler inbyggda: när du träffar Ctrl + C För att stoppa ett löpande kommando skickar du processen SIGINT att avbryta och stoppa det pågående kommandot. De var ett av de första sätten apps kunde kommunicera med varandra och är en del av det gamla “Bärbart operativsystems gränssnitt” (POSIX) standarder.
Även om det är trevligt att förstå grunderna för hur ditt system fungerar, kan du också använda dessa signaler för att fånga information om felaktiga appar.
Vad är POSIX?
POSIX är grunden för Unix och Unix-Like operativsystem. Bland dessa kompatibla system är MacOS, som gjordes för att vara Unix-kompatibelt. Kärnan är Darwin, en Unix-kärna med rötter som går tillbaka till NeXTSTEP. Det var en gaffel av BSD, en av de ursprungliga Unix-varianterna.
POSIX ser till att alla dessa operativsystem hanterar kod på förväntade sätt, vilket gör det möjligt för utvecklare att känna till att deras kod är verkligen portabel. När de skickar en av dessa signaler på en annan maskin till en process, är de data de återvänder i ett format som de kan förutse och bearbeta. Det här är en bruttoförenkling av cirka 40 års datorhistoria, men du får den allmänna idén.
När du kommunicerar med de mest grundläggande daemonerna som utgör Unix-basen i macOS, är dessa signaler bäst. Daemons är de bakgrundsprocesser som driver väsentliga delar av din dator - eller i vanliga macOS parlance, tjänster. Den ökända discoveryd är ett exempel. Detta var OS X Yosemite 10.10 ersättning för mDNSResponder, En annan tjänst skyllde för nätverksproblemen i den uppdateringen.
Beroende på hur en app är utformad för att ta emot signaler kan du skicka en signal för att avsluta en app för att skapa det som kallas en kärndump. Core dumps innehåller alla aktuella data om ett pågående program. Dessa är viktiga för att felsöka appar som ständigt kraschar. På Mac-skivan dumpas dessa i Mach-O-filformatet, som du kan läsa i MacOS-utvecklingsmiljön, som heter Xcode. De flesta användare kommer antagligen inte att göra mycket med dessa, men om du är frustrerad av ett appproblem kan de vara bra att skicka till en utvecklare för stöd.
Det finns en annan liten bit av klassisk databehandling som visar sina rötter här. Mach-O-filformatet delar sitt namn med Mach-mikrokärnan. Tillsammans med BSD är detta en del av rötterna till macOS, och de två är en del av grundkärnan, XNU. Mach är inte lika stor som BSD, så det får inte mycket av pressen men är en del av vad som ställdes Apples operativsystem förutom andra Unix-varianter.
Så hur kan jag använda dem?
Vi har alla varit där förut: du får en uppdatering till en app eller hämtar en ny app Hur man installerar och tar bort Mac-programvara: 5 enkla metoder Så här installerar och tar du bort Mac-programvara: 5 enkla metoder Växla till en Mac och komma till grepp med grunderna? Undrar hur man installerar programvara från kommandoraden? Har du gamla Windows-appar som du helt enkelt måste köra på din Apple-dator? Läs mer, och det hänger varje gång du öppnar den. Du öppnar Force Sluta från Apple-menyn och se Applikationen visas som Svarar inte. Ännu värre är det dock en bakgrundsprocess som drar ner ditt system.
Öppna Aktivitetsmonitor och klicka på processen som inte svarar. Gå sedan till Se menyn och välj Skicka signal för att bearbeta. En meny kommer dyka upp och låter dig välja vilken signal som ska skickas till processen välj din signal och tryck på Skicka.
Om du föredrar Terminal 4 Coola saker du kan göra med Mac Terminal 4 Coola saker du kan göra med Mac Terminal Terminalen är Mac OS X analog av Windows-kommandotolken, eller CMD. Det är ett verktyg, som du förmodligen redan vet, som låter dig styra din dator med hjälp av textkommandon, i motsats till ... Läs mer, du kommer att använda ett kommando du redan är bekant med. De döda
Kommando används för att stoppa en process. Om du lägger till -s
Du kan lägga till ett nummer för att skicka en signal till processen du dödar. Här är en lista över antalet gemensamma kommandon listor i döda
man sida:
- 1 - HUP (lägg upp)
- 2 - INT (avbryt)
- 3 - QUIT (avsluta)
- 6 - ABRT (avbryt)
- 9 - KILL (icke-fångbar, ojämn död)
- 15 - TERM (programvarans avslutningssignal)
Det finns några andra signaler du kan skicka också, dessa är bara de vanligaste. Det finns en omfattande lista över koder som finns här.
När använder jag dem?
Nu när du vet vad du ska göra med POSIX-signalerna kan du använda dem för att stoppa dina hängda processer rent. För att vara rättvis, kommer du inte att använda dessa koder varje dag. När du arbetar med en utvecklare på en udda appkrasch eller hjälper ditt sysadmin beta-test ditt företags inbyggda program kan dessa koder hjälpa till att få den information de behöver.
Om appen är kodad för att skapa dessa dumpar hittar du dem i katalogen / kärnor
gör det här en enkel katalog för att titta på när du får data för en krasch eller en hängd applikation. Du kan kolla här och se vilka dumpar som finns i katalogen med ls -a
kommando. Detta visar alla filer i den katalogen du kan sedan kopiera dem till en mer tillgänglig katalog musik kommandot mv filnamn destination
.
I Terminal Använd kommando cd / kärnor
för att växla till katalogen, då ls -a
att lista innehållet. För att flytta en fil till din dokumentmapp använd helt enkelt mv filnamn / Användare / användarnamn / Dokument
(byter ut filnamn och Användarnamn).
Om du är en Unix-användare på lång tid som flyttat till Mac, vilka andra lilla kända funktioner finns där ute? Om du är intresserad av att kolla in ett projekt som bara använder open source-grunden för macOS, kolla PureDarwin. Låt oss veta hur det fungerade i kommentarerna. Vi skulle också vilja höra när POSIX-signaler löste ett enstaka problem med din Mac.
Har du använt POSIX-signaler för felsökning innan?
Bildkrediter: Dean Drobot / Shutterstock
Utforska mer om: Kommandotolk, MacOS Sierra, Terminal, Unix.