Felsöka Mac Apps på gammaldags sätt med POSIX-signaler

POSIX-signaler är ett resultat av Unix-stiftelsen i hjärtat av macOS, men varför är de där och hur kan du fortfarande använda dem?

POSIX-signaler är ett resultat av Unix-stiftelsen i hjärtat av macOS, men varför är de där och hur kan du fortfarande använda dem?
Annons

I Activity Monitor finns ett kryptiskt menyalternativ för att sända 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 precis 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 trycker på Ctrl + C för att stoppa ett löpande kommando skickar du processen SIGINT för att avbryta och stoppa kommandot som körs. De var ett av de första sätten apps kunde kommunicera med varandra och ingår i gamla POSIX-standarder (Portable Operating System Interface).

Ä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 i sig 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. Detta ä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 upptäckten ä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.

Kommandorad
Bildkrediter: Dominik Rusiecki via Freeimages

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 gör förmodligen inte mycket med dessa, men om du är frustrerad av ett appproblem kan de vara bra att skicka till en utvecklare för support.

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ämmer 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 Quit från Apple-menyn och ser att programmet visas som inte svarar . Ännu värre är det dock en bakgrundsprocess som drar ner ditt system.

Aktivitetsmonitor

Öppna Aktivitetsövervakning och klicka på processen som inte svarar. Gå sedan till Visa- menyn och välj Sänd 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. kill kommandot används för att stoppa en process. Om du lägger till -s du 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 på kill man sidan:

  • 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 /cores vilket 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 kommandot ls -a . Detta visar alla filer i den katalogen du kan sedan kopiera dem till en mer tillgänglig mv filename destination kommandot mv filename destination .

I terminalen använder command cd /cores att växla till katalogen, sedan ls -a att lista innehållet. För att flytta en fil till din dokumentmapp använd helt enkelt mv filename /Users/username/Documents (ersätter filnamn och användarnamn ).

mackeyboard
Bildkredit: Erika Varga via Freeimages

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

In this article