Fejlfinding Mac Apps den gammeldags måde med POSIX-signaler

POSIX-signaler er et resultat af Unix-fundamentet i hjertet af macOS, men hvorfor er de der, og hvordan kan du stadig bruge dem?

POSIX-signaler er et resultat af Unix-fundamentet i hjertet af macOS, men hvorfor er de der, og hvordan kan du stadig bruge dem?
Reklame

I Activity Monitor er der en kryptisk menupunkt til Send Signal to Process . Har du nogensinde spekuleret på, hvad det var? Hvis du vælger det, vil du se uklare udtryk som SIGINT og SIGHUP, som ikke præcis rydder op. Så hvad er disse signaler præcist?

Disse signaler er et resultat af Unix-fundamentet Mac OS X Yosemite, fra perspektivet af en Linux-bruger Mac OS X Yosemite, fra perspektivet af en Linux-bruger Mac OS X bruges som plakatbarnet til en ren og elegant grænseflade. Som Linux-skribent er det min pligt at lave sammenligninger mellem Linux distros, men også imod konkurrencen. Læs mere i hjertet af macOS. Terminal har nogle af disse signaler indbygget: Når du rammer Ctrl + C for at stoppe en kørende kommando, sender du processen SIGINT for at afbryde og stoppe den igangværende kommando. De var en af ​​de første måder apps kunne kommunikere med hinanden og er en del af gamle POSIX-standarder (Portable Operating System Interface).

Selv om det er rart at forstå det grundlæggende i, hvordan dit system fungerer, kan du også bruge disse signaler til at indhente oplysninger om fejlagtige apps.

Hvad er POSIX?

POSIX er fundamentet for Unix og Unix-Like operativsystemer. Blandt disse kompatible systemer er macOS, som blev lavet til at være Unix-kompatibel. I kernen er Darwin, en Unix-kerne med rødder, der går tilbage til NeXTSTEP. Det selv var en gaffel af BSD, en af ​​de originale Unix-varianter.

POSIX sikrer, at alle disse operativsystemer håndterer kode på forventede måder, hvilket gør det muligt for udviklere at kende deres kode, er virkelig bærbare. Når de sender en af ​​disse signaler på en anden maskine til en proces, er de data, de vender tilbage, i et format, de kan forudse og behandle. Dette er en grov forenkling af omkring 40 års computerhistorie, men du får den generelle ide.

Når de kommunikerer med de mest basale dæmoner, der udgør Unix-basen i macOS, er disse signaler de bedste. Daemoner er baggrundsprocesserne, der kører essensen af ​​din computer - eller i almindelig MacOS-parlance, tjenester. Den berygtede discoveryd er et eksempel. Dette var OS X Yosemite 10.10 erstatning for mDNSResponder, en anden tjeneste skylden for netværksproblemerne i den opdatering.

Kommandolinje
Billedkredit: Dominik Rusiecki via Freeimages

Afhængigt af, hvordan en app er designet til at modtage signaler, kan du sende et signal til at afslutte en app for at oprette, hvad der kaldes et kernedump. Kernedumpene indeholder alle de aktuelle data om et kørende program. Disse er afgørende for fejlfinding af apps, der konstant styrter. På Mac'en dumpes disse i Mach-O-filformatet, som du kan læse i MacOS-udviklingsmiljøet, kaldet Xcode. De fleste brugere vil nok ikke gøre meget med disse, men hvis du er frustreret af et app-problem, kan de være nyttige til at sende til en udvikler til support.

Der er en anden lille smule af klassisk databehandling, der viser sine rødder her. Mach-O-filformatet deler sit navn med Mach-mikrokernen. Sammen med BSD er dette en del af rødderne af macOS, og de to er en del af grundkernen, XNU. Mach er ikke så storied som BSD, så det får ikke meget af pressen, men er en del af, hvad der er Apples operativsystem ud over andre Unix-varianter.

Så hvordan kan jeg bruge dem?

Vi har alle været der før: Du får en opdatering til en app, eller download en ny app Sådan installeres og fjerner du Mac-software: 5 enkle metoder Sådan installeres og fjerner du Mac-software: 5 enkle metoder Skiftes til en Mac og kommer til greb med det grundlæggende? Undre hvordan man installerer software fra kommandolinjen? Har du gamle Windows-apps, som du simpelthen skal køre på din Apple computer? Læs mere, og det hænger hver gang du åbner det. Du åbner Force Quit fra Apple-menuen og ser, at programmet vises som ikke reagerer . Værre endnu, det er lidt baggrundsproces, der trækker dit system ned.

Aktivitetsovervågning

Åbn Aktivitetsovervågning og klik på den proces, der ikke reagerer. Gå derefter til menuen Vis og vælg Send signal til behandling . En menu vil dukke op og give dig mulighed for at vælge hvilket signal der skal sendes til processen, vælg dit signal og tryk på Send .

Hvis du foretrækker Terminal 4 Cool Ting, du kan gøre med Mac Terminal 4 Cool ting, du kan gøre med Mac Terminal Terminal er Mac OS X-analog af Windows-kommandoprompten eller CMD. Det er et værktøj, som du sikkert allerede ved, som giver dig mulighed for at styre din computer ved hjælp af tekstkommandoer, i modsætning til ... Læs mere, du vil bruge en kommando, du allerede er bekendt med. kill kommandoen bruges til at stoppe en proces. Hvis du tilføjer -s, kan du tilføje et nummer for at sende et signal til processen du dræber. Her er en liste over antallet af fælles kommandoer liste på kill man side:

  • 1 - HUP (ophæng)
  • 2 - INT (afbryd)
  • 3 - QUIT (stop)
  • 6 - ABRT (abort)
  • 9 - KILL (ikke-catchable, non-ignorable kill)
  • 15 - TERM (software termineringssignal)

Der er nogle andre signaler, du kan sende også, disse er blot de mest almindelige. Der er en omfattende liste over koder tilgængelige her.

Hvornår bruger jeg dem?

Nu hvor du ved, hvad du skal gøre med POSIX-signalerne, kan du bruge dem til at stoppe dine hangprocesser rent. For at være retfærdig, vil du ikke bruge disse koder hver dag. Når du arbejder med en udvikler på et mærkeligt programkrasj eller hjælper din sysadmin beta-test din virksomheds interne apps, kan disse koder hjælpe med at få de oplysninger, de har brug for.

Hvis appen er kodet for at oprette disse dumper, vil du finde dem i mappen /cores hvilket gør dette til en nem mappe til at se efter, når der hentes data til en nedbrud eller hængende applikation. Du kan tjekke her og se, hvilke dumps der er i mappen ved hjælp af kommandoen ls -a . Dette vil vise dig alle filerne i den mappe, du kan derefter kopiere dem til en mere tilgængelig mappe musik kommandoen mv filename destination .

I Terminal brug command cd /cores at skifte til biblioteket, så ls -a at liste indholdet. For at flytte en fil til din Documents-mappe skal du blot bruge mv filename /Users/username/Documents (erstatter filnavn og brugernavn ).

mackeyboard
Billedkredit: Erika Varga via Freeimages

Hvis du er en Unix-bruger i lang tid, der flyttede til Mac, hvilke andre kendte funktioner er derude? Hvis du er interesseret i at tjekke et projekt, der kun bruger open source fundamentet af macOS, skal du tjekke PureDarwin. Lad os vide, hvordan det fungerede i kommentarerne. Vi vil også gerne høre, når POSIX-signaler løst et stædigt problem med din Mac.

Har du brugt POSIX signaler til fejlfinding før?

Billedkreditter: Dean Drobot / Shutterstock

In this article