Feilsøk Mac Apps den gammeldags måten med POSIX-signaler
I Activity Monitor er det et kryptisk menyalternativ til Send signal til prosess. 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 treffer Ctrl + C For å stoppe en løpende kommando, sender du prosessen SIGINT å 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 det gamle “Bærbart operativsystemgrensesnitt” (POSIX) standarder.
Selv om det er fint å forstå grunnleggende om hvordan systemet fungerer, kan du også bruke disse signalene til å fange opp informasjon om misbehavende apper.
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 skyldes nettverksproblemer i den oppdateringen.
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 nok 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 hva 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 se applikasjonen vises som Svarer ikke. Verre ennå, det er litt bakgrunnsprosess å dra systemet ned.
Åpen Aktivitetsmonitor og klikk på prosessen som ikke svarer. Så gå til Utsikt menyen og velg Send signal til prosess. En meny kommer opp og lar deg velge hvilket signal som skal sendes til prosessen, velg signalet ditt og trykk på Sende.
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. De drepe
Kommandoen brukes til å stoppe en prosess. Hvis du legger til -s
Du kan legge til et nummer for å sende et signal til prosessen du dreper. Her er en liste over antall vanlige kommandoer i listen drepe
mann side:
- 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 hjelpe med å få den informasjonen de trenger.
Hvis appen er kodet for å opprette disse dumpene, skal du finne dem i katalogen / kjernene
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 er i katalogen ved hjelp av ls -a
kommando. Dette vil vise deg alle filene i den katalogen du kan deretter kopiere dem til en mer tilgjengelig katalog musikk kommandoen mv filnavn destinasjon
.
I Terminal bruke kommando cd / cores
for å bytte til katalogen, deretter ls -a
å liste innholdet. For å flytte en fil til dokumentmappen din, bruk bare mv filnavn / Brukere / brukernavn / Dokumenter
(erstatte filnavn og brukernavn).
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 for feilsøking før?
Image Credits: Dean Drobot / Shutterstock
Utforsk mer om: Kommandoprompt, MacOS Sierra, Terminal, Unix.