Feilsøk Mac Apps den gammeldags måten med POSIX-signaler

POSIX-signaler er et resultat av Unix-fundamentet i hjertet av MacOS, men hvorfor er de der, og hvordan kan du fortsatt bruke dem?

POSIX-signaler er et resultat av Unix-fundamentet i hjertet av MacOS, men hvorfor er de der, og hvordan kan du fortsatt bruke dem?
Annonse

I Activity Monitor er det et kryptisk menyalternativ for Send Signal to Process . Har du noen gang lurt på hva det var? Hvis du velger den, vil du se uklare vilkår som SIGINT og SIGHUP, som ikke nøyaktig rydder opp ting. Så hva er disse signalene?

Disse signalene er et resultat av Unix-grunnlaget Mac OS X Yosemite, fra perspektivet av en Linux-bruker Mac OS X Yosemite, fra perspektivet til en Linux-bruker Mac OS X brukes som plakatbarnet for et rent og elegant grensesnitt. Som Linux-forfatter er det min plikt å gjøre sammenligninger mellom Linux distros, men også mot konkurransen. Les mer i hjertet av macOS. Terminal har noen av disse signalene innebygd: Når du klikker Ctrl + C for å stoppe en løpende kommando, sender du prosessen SIGINT for å avbryte og stoppe kommandoen som kjører. De var en av de første måtene apps kunne kommunisere med hverandre og er en del av gamle POSIX-standarder (Portable Operating System Interface).

Selv om det er fint å forstå grunnleggende om hvordan systemet fungerer, kan du også bruke disse signalene til å fange opp informasjon om feilbehandlede programmer.

Hva er POSIX?

POSIX er grunnlaget for Unix og Unix-Like operativsystemer. Blant disse kompatible systemene er macOS, som ble laget for å være Unix-kompatibelt. Kjernen er Darwin, en Unix-kjerne med røtter som går tilbake til NeXTSTEP. Det selv var en gaffel av BSD, en av de opprinnelige Unix-varianter.

POSIX sikrer at alle disse operativsystemene håndterer kode på forventede måter, slik at utviklere kan vite at koden er virkelig bærbar. Når de sender en av disse signalene på en annen maskin til en prosess, blir dataene de kommer tilbake, i et format som de kan forutse og behandle. Dette er en brutto forenkling av om lag 40 års databehandling, men du får den generelle ideen.

Når du kommuniserer med de mest grunnleggende daemonene som utgjør Unix-basen av macOS, er disse signalene de beste. Daemoner er bakgrunnsprosessene som kjører essensialene til datamaskinen din - eller i vanlige macOS parlance, tjenester. Den beryktede discoveryd er et eksempel. Dette var OS X Yosemite 10.10 erstatning for mDNSResponder, en annen tjeneste skylden for nettverksproblemer i den oppdateringen.

Kommandolinje
Bildekreditt: Dominik Rusiecki via Freeimages

Avhengig av måten en app er utformet for å motta signaler, kan du sende et signal for å avslutte en app for å opprette det som kalles en kjernefiltre. Kjernefelt inneholder alle de nåværende dataene om et kjørende program. Disse er avgjørende for feilsøking av apper som stadig krasjer. På Macen dumper disse i Mach-O-filformatet, som du kan lese i MacOS-utviklingsmiljøet, kalt Xcode. De fleste brukere vil sannsynligvis ikke gjøre mye med disse, men hvis du er frustrert av et appproblem, kan de være nyttige å sende til en utvikler for støtte.

Det er en annen liten bit av klassisk databehandling som viser sine røtter her. Mach-O-filformatet deler navnet sitt med Mach-mikrokernen. Sammen med BSD er dette en del av røttene til macOS, og de to er en del av grunnkjernen, XNU. Mach er ikke så stor som BSD, så det får ikke mye av pressen, men er en del av det som er Apples operativsystem bortsett fra andre Unix-varianter.

Så hvordan kan jeg bruke dem?

Vi har alle vært der før: Du får en oppdatering til en app, eller laster ned en ny app Slik installerer og fjerner du Mac-programvare: 5 enkle metoder Slik installerer og fjerner du Mac-programvare: 5 enkle metoder Skiftes til en Mac og kommer til griper med det grunnleggende? Lurer på hvordan du installerer programvare fra kommandolinjen? Har du gamle Windows-apper som du bare må kjøre på Apple-datamaskinen din? Les mer, og det henger hver gang du åpner det. Du åpner Force Quit fra Apple-menyen og ser at programmet vises som ikke svarer . Verre ennå, det er litt bakgrunnsprosess å dra systemet ned.

Aktivitetsmonitor

Åpne Aktivitetsmonitor og klikk på prosessen som ikke svarer. Deretter går du til Vis- menyen og velger Send signal for å behandle . En meny vil dukke opp og tillate deg å velge hvilket signal som skal sendes til prosessen, velg signalet ditt og trykk Send .

Hvis du foretrekker Terminal 4 Cool Ting du kan gjøre med Mac Terminal 4 Kule ting du kan gjøre med Mac Terminal Terminal er Mac OS X analog av Windows-kommandoprompten, eller CMD. Det er et verktøy, som du sikkert allerede vet, som lar deg kontrollere datamaskinen din ved hjelp av tekstkommandoer, i motsetning til ... Les mer, du vil bruke en kommando du allerede er kjent med. kill kommandoen brukes til å stoppe en prosess. Hvis du legger til - kan du legge til et nummer for å sende et signal til prosessen du dreper. Her er en liste over antall vanlige kommandoer i kill siden:

  • 1 - HUP (legg opp)
  • 2 - INT (avbryt)
  • 3 - QUIT (avslutt)
  • 6 - ABRT (avbryte)
  • 9 - KILL (ikke-fangbar, ikke-uheldig drep)
  • 15 - TERM (programvare termineringssignal)

Det er noen andre signaler du kan sende også, disse er bare de vanligste. Det finnes en omfattende liste over koder tilgjengelig her.

Når bruker jeg dem?

Nå som du vet hva du skal gjøre med POSIX-signalene, kan du bruke dem til å stoppe dine hengte prosesser rent. For å være rettferdig, vil du ikke bruke disse kodene hver dag. Når du jobber med en utvikler på en merkelig appkrasj, eller hjelper din sysadmin beta-test firmaets interne apper, kan disse kodene bidra til å få den informasjonen de trenger.

Hvis appen er kodet for å opprette disse dumpene, skal du finne dem i katalogen /cores noe som gjør dette til en enkel katalog for å se etter når du får data for et krasj eller hengt program. Du kan sjekke her og se hvilke dumper som er i katalogen ved hjelp av kommandoen ls -a . Dette vil vise deg alle filene i den katalogen du kan da kopiere dem til en mer tilgjengelig katalogmusikk kommandoen mv filename destination .

I Terminal bruk command cd /cores å bytte til katalogen, deretter ls -a å liste innholdet. For å flytte en fil til dokumentmappen din, bruk bare mv filename /Users/username/Documents (erstatter filnavn og brukernavn ).

mackeyboard
Bildekreditt: Erika Varga via Freeimages

Hvis du er en Unix-bruker på lang tid som flyttet til Mac, hvilke andre kjente funksjoner er der ute? Hvis du er interessert i å sjekke ut et prosjekt som bare bruker open source grunnlaget for macOS, sjekk ut PureDarwin. Gi oss beskjed om hvordan det fungerte i kommentarene. Vi vil også gjerne høre når POSIX-signaler løst et hardt problem med Mac-en.

Har du brukt POSIX-signaler til feilsøking før?

Image Credits: Dean Drobot / Shutterstock

In this article