Problemen met Mac Apps op de ouderwetse manier oplossen met POSIX-signalen

POSIX-signalen zijn het resultaat van de oprichting van Unix in het hart van macOS, maar waarom zijn ze daar en hoe kunt u ze nog steeds gebruiken?

POSIX-signalen zijn het resultaat van de oprichting van Unix in het hart van macOS, maar waarom zijn ze daar en hoe kunt u ze nog steeds gebruiken?
Advertentie

In Activity Monitor is er een cryptische menuoptie om signaal naar proces te verzenden . Heb je je ooit afgevraagd wat het was? Als u dit selecteert, ziet u onduidelijke termen zoals SIGINT en SIGHUP, waardoor de dingen niet duidelijk worden. Dus wat zijn precies deze signalen?

Die signalen zijn het resultaat van de Unix-stichting Mac OS X Yosemite, vanuit het perspectief van een Linux-gebruiker Mac OS X Yosemite, vanuit het perspectief van een Linux-gebruiker Mac OS X wordt gebruikt als het kind van de poster voor een schone en elegante interface. Als een Linux-schrijver is het mijn taak om vergelijkingen te maken tussen Linux-distributies, maar ook tegen de concurrentie. Lees meer in het hart van macOS. Terminal heeft een aantal van deze signalen ingebouwd: wanneer u op Ctrl + C drukt om een ​​lopende opdracht te stoppen, verzendt u het proces SIGINT om de lopende opdracht te onderbreken en te stoppen. Ze waren een van de eerste manieren waarop apps met elkaar konden communiceren en maken deel uit van de oude "Portable Operating System Interface" (POSIX) -standaarden.

Hoewel het leuk is om de basisprincipes van hoe uw systeem werkt te begrijpen, kunt u deze signalen ook gebruiken om informatie over verkeerd werkende apps vast te leggen.

Wat is POSIX?

POSIX is de basisnorm voor Unix- en Unix-achtige besturingssystemen. Een van deze compatibele systemen is macOS, dat Unix-compatibel is gemaakt. In de kern zit Darwin, een Unix-kern met wortels die dateren uit NeXTSTEP. Dat was zelf een vork van BSD, een van de originele Unix-varianten.

POSIX zorgt ervoor dat al deze besturingssystemen code op de verwachte manier verwerken, waardoor ontwikkelaars kunnen weten dat hun code echt draagbaar is. Wanneer ze een van deze signalen op een andere machine naar een proces sturen, hebben de gegevens die ze ontvangen een formaat dat ze kunnen anticiperen en verwerken. Dit is een grove vereenvoudiging van ongeveer 40 jaar computergeschiedenis, maar je krijgt het algemene idee.

Wanneer je communiceert met de meest basale daemons die de basis Unix van macOS vormen, zijn deze signalen de beste. Daemons zijn de achtergrondprocessen die de essentie van uw computer uitvoeren - of in gewone macOS-taalgebruiksdiensten. De beruchte ontdekking is een voorbeeld. Dit was de vervanging van OS X Yosemite 10.10 voor mDNSResponder, een andere service die verantwoordelijk werd gehouden voor de netwerkproblemen in die update.

Opdrachtregel
Afbeelding tegoed: Dominik Rusiecki via Freeimages

Afhankelijk van de manier waarop een app is ontworpen om signalen te ontvangen, kunt u een signaal verzenden om een ​​app te sluiten om zo een kerndump te maken. Core dumps bevatten alle actuele gegevens over een lopend programma. Deze zijn essentieel voor het oplossen van problemen met apps die voortdurend crashen. Op de Mac worden deze gedumpt in het Mach-O-bestandsformaat, dat u kunt lezen in de ontwikkelomgeving van macOS, genaamd Xcode. De meeste gebruikers zullen hier waarschijnlijk niet veel mee doen, maar als je gefrustreerd bent door een app-probleem, kunnen ze handig zijn om naar een ontwikkelaar te sturen voor ondersteuning.

Er is nog een klein beetje klassiek computergebruik dat zijn wortels hier laat zien. Het Mach-O bestandsformaat deelt zijn naam met de Mach microkernel. Samen met BSD maakt dit deel uit van de roots van macOS, en de twee maken deel uit van de fundamentele kernel, XNU. Mach is niet zo legendarisch als BSD, dus het krijgt niet veel van de pers, maar maakt deel uit van wat het besturingssysteem van Apple onderscheidt van andere Unix-varianten.

Dus hoe kan ik ze gebruiken?

We zijn er allemaal al eerder geweest: u krijgt een update van een app of download een nieuwe app Mac-software installeren en verwijderen: 5 eenvoudige methoden Mac-software installeren en verwijderen: 5 eenvoudige methoden Naar een Mac overschakelen en naar grepen met de basis? Vraagt ​​u zich af hoe u software vanaf de opdrachtregel kunt installeren? Heb je oude Windows-apps die je gewoon op je Apple-computer moet uitvoeren? Meer lezen en het blijft hangen elke keer dat u het opent. U opent Force Quit in het Apple-menu en ziet dat de toepassing wordt weergegeven als niet reagerend . Erger nog, het is een achtergrondproces dat je systeem naar beneden sleept.

Activiteitenmonitor

Open Activity Monitor en klik op het proces dat niet reageert. Ga vervolgens naar het menu Beeld en selecteer Verzendsignaal om te verwerken . Er verschijnt een menu en u kunt kiezen welk signaal naar het proces moet worden gestuurd om uw signaal te selecteren en op Verzenden te drukken.

Als u de voorkeur geeft aan de coole dingen die u met de Terminal 4 kunt doen 4 Leuke dingen die u kunt doen met de Mac Terminal De terminal is de Mac OS X-analoog van de Windows-opdrachtprompt of CMD. Het is een tool, zoals je waarschijnlijk al weet, die je in staat stelt om je computer te besturen met behulp van tekstcommando's, in tegenstelling ... Lees Meer, je zult een commando gebruiken dat je al bekend bent. Het kill commando wordt gebruikt om een ​​proces te stoppen. Als u -s toevoegt, kunt u een nummer toevoegen om een ​​signaal naar het proces dat u aan het doden bent te verzenden. Hier is een lijst met het aantal veelgebruikte opdrachten in de kill manpagina:

  • 1 - HUP (ophangen)
  • 2 - INT (onderbreken)
  • 3 - STOP (stop)
  • 6 - ABRT (abort)
  • 9 - KILL (niet-catchable, niet-ignorable kill)
  • 15 - TERM (software-terminatiesignaal)

Er zijn ook enkele andere signalen die u kunt verzenden, deze zijn slechts de meest voorkomende. Er is een uitgebreide lijst met codes beschikbaar hier.

Wanneer gebruik ik ze?

Nu u weet wat u met de POSIX-signalen moet doen, kunt u ze gebruiken om uw opgehangen processen netjes te stoppen. Om eerlijk te zijn, je gaat deze codes niet elke dag gebruiken. Wanneer u met een ontwikkelaar aan een vreemde app-crash werkt, of uw sysadmin bètatest voor de interne apps van uw bedrijf helpt, kunnen deze codes helpen bij het verkrijgen van de informatie die zij nodig hebben.

Als de app is gecodeerd om deze dumps aan te maken, gaat u ze vinden in de directory /cores waardoor dit een gemakkelijke map is om naar te kijken wanneer u gegevens ophaalt voor een crashende of opgehangen applicatie. U kunt hier controleren en zien welke dumps in de directory staan ​​met de opdracht ls -a . Dit toont u alle bestanden in die map die u vervolgens kunt kopiëren naar een meer toegankelijke map muziek de opdracht mv filename destination .

Gebruik in Terminal de command cd /cores om naar de map te schakelen, en vervolgens ls -a om de inhoud weer te geven. Om een ​​bestand naar je map Documenten te verplaatsen, gebruik je gewoon mv filename /Users/username/Documents (vervang bestandsnaam en gebruikersnaam ).

mackeyboard
Afbeelding: Erika Varga via Freeimages

Als je een oude Unix-gebruiker bent die naar de Mac is verhuisd, welke andere weinig bekende functies zijn er dan? Als u geïnteresseerd bent in het uitchecken van een project dat alleen de open source-basis gebruikt van macOS, check dan PureDarwin. Laat ons weten hoe dat in de commentaren is uitgewerkt. We willen ook graag horen wanneer POSIX-signalen een hardnekkig probleem met je Mac oplossen.

Heeft u al POSIX-signalen gebruikt voor probleemoplossing?

Afbeeldingscredits: Dean Drobot / Shutterstock

In this article