Annons

I Activity Monitor finns ett kryptiskt menyalternativ att Skicka signal till processen. Har du någonsin undrat vad det var? Om du väljer det kommer du att se otydliga termer som SIGINT och SIGHUP, som inte exakt rensar upp saker. Så vad är dessa signaler exakt?

Dessa signaler är ett resultat av Unix foundation Mac OS X Yosemite, från en Linux-användares perspektivMac OS X används som affischbarnet för ett rent och elegant gränssnitt. Som Linux-författare är det min skyldighet att göra jämförelser mellan Linux-distros, men också mot konkurrensen. Läs mer i hjärtat av macOS. Terminal har några av dessa signaler inbyggda: när du slår Ctrl + C för att stoppa ett löpande kommando skickar du processen SIGINT att avbryta och stoppa kommandot som för närvarande körs. De var ett av de första sätten som appar kunde kommunicera med varandra och ingår i gamla “Portable Operating System Interface” (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.

instagram viewer

Vad är POSIX?

POSIX är grundstandarden för Unix och Unix-liknande operativsystem. Bland dessa kompatibla system är macOS, som gjordes för att vara Unix-kompatibel. Kärnan ligger i Darwin, en Unix-kärna med rötter som går tillbaka till NeXTSTEP. Det själv var en gaffel av BSD, en av de ursprungliga Unix-varianterna.

POSIX säkerställer att alla dessa operativsystem hanterar kod på förväntat sätt, vilket gör det möjligt för utvecklare att veta att deras kod verkligen är bärbar. När de skickar en av dessa signaler på en annan maskin till en process, är de data de får tillbaka i ett format de kan förutse och bearbeta. Detta är en grov förenkling av cirka 40 års datorhistoria, men du får den allmänna idén.

När du kommunicerar med de mest grundläggande demonerna som utgör Unix-basen i macOS är dessa signaler bäst. Daemoner är bakgrundsprocesserna som kör det väsentliga för din dator - eller gemensamt Mac OS parlance, tjänster. Det ökända discoveryd är ett exempel. Detta var OS X Yosemite 10.10 ersättare för mDNSResponder, en annan tjänst skyllde för nätverksproblemen i den uppdateringen.

Kommandorad
Bildkredit: 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 core dump. Kärndumpar innehåller all aktuell information om ett löpande program. Dessa är viktiga för felsökning av appar som ständigt kraschar. På Mac dumpar dessa i Mach-O-filformat, som du kan läsa i MacOS-utvecklingsmiljön kallad Xcode. De flesta användare gör förmodligen inte mycket med dessa, men om du är frustrerad av ett app-problem kan de vara till hjälp att skicka till en utvecklare för support.

Det finns en annan liten klassisk dator 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 press utan är en del av det som skiljer Apples operativsystem från andra Unix-varianter.

Så hur kan jag använda dem?

Vi har alla varit där tidigare: du får en uppdatera till en app eller ladda ner en ny app Hur du installerar och tar bort Mac-programvara: 5 enkla metoderVäxlade till en Mac och få grepp om grunderna? Undrar du 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 det. Du öppnar Tvinga avslutafrån Apple-menyn och se applikationen visas som Svarar inte. Värre är det att det är någon bakgrundsprocess som drar ner ditt system.

Aktivitetsövervakare

Öppna Aktivitetsövervakare och klicka på processen som inte svarar. Gå sedan till Se menyn och välj Skicka signal för att bearbeta. En meny dyker upp och låter dig välja vilken signal du vill skicka till processen, välj din signal och tryck på Skicka.

Om du föredrar terminalen 4 coola saker du kan göra med Mac-terminalenTerminalen är Mac OS X-analog till kommandotolken Windows eller CMD. Det är ett verktyg, som du antagligen redan vet, som låter dig styra din dator med hjälp av textkommandon, i motsats till ... Läs mer , använder du ett kommando som 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 vanliga kommandolistor i döda man sida:

  • 1 - HUP (lägg på)
  • 2 - INT (avbrott)
  • 3 - AVSLUTA (avsluta)
  • 6 - ABRT (abort)
  • 9 - KILL (icke-fångbart, icke-ignorerbart död)
  • 15 - TERM (programmets avslutande signal)

Det finns några andra signaler du kan skicka också, det är bara de vanligaste. Det finns en omfattande lista över koder tillgängliga 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änga processer rent. För att vara rättvis ska du inte använda dessa koder varje dag. När du arbetar med en utvecklare vid en udda appkrasch eller hjälper din sysadmin-beta testa ditt företags interna appar kan dessa koder hjälpa till att få den information de behöver.

Om appen är kodad för att skapa dessa dumpningar ska du hitta dem i katalogen /cores gör detta till en enkel katalog att titta på när du skaffar data för ett program som kraschar eller hängs upp. Du kan kolla här och se vilka dumpningar som finns i katalogen med hjälp av ls -a kommando. Detta visar dig alla filer i den katalogen och sedan kan du kopiera dem till en mer tillgänglig katalogmusik kommandot mv filnamn destination.

I Terminal Använd kommando cd / kärnor för att byta till katalogen ls -a för att lista innehållet. För att flytta en fil till mappen Dokument använder du bara mv filnamn / Användare / användarnamn / Dokument (byter ut filnamn och Användarnamn).

mackeyboard
Bildkredit: Erika Varga via Freeimages

Om du är en långvarig Unix-användare som flyttade till Mac, vilka andra lite kända funktioner finns där ute? Om du är intresserad av att kolla in ett projekt som bara använder öppen källkod för macOS kolla in PureDarwin. Låt oss veta hur det fungerade i kommentarerna. Vi skulle också vilja höra när POSIX-signaler löste ett envis problem med din Mac.

Har du använt POSIX-signaler för felsökning tidigare?

Bildpoäng: Dean Drobot / Shutterstock

Michael använde inte en Mac när de var dömda, men han kan koda i Applescript. Han har examen i datavetenskap och engelska; han har skrivit om Mac, iOS och videospel ett tag nu; och han har varit IT-apa på dagtid i över ett decennium, specialiserat på skript och virtualisering.