een eenvoudige Launchd Tutorial

stel dat u een klein script hebt geschreven dat u zo nu en dan wilt uitvoeren. Als u een Mac gebruikt, dan is launchd een perfect hulpmiddel om te gebruiken.

het is beter dan crontab omdat, onder andere, als uw computer is uitgeschakeld wanneer uw programma wordt uitgevoerd, launchd uw programma zal uitvoeren zodra de computer wakker wordt. Ondertussen zal crontab dat niet doen.

het eerste wat u moet doen is een script maken om uit te voeren. Ik ga een simpel knooppunt schrijven.js maar je kunt gebruiken wat je wilt.

touch ~/demo/main.js

omwille van dit voorbeeld, alles wat dit script gaat doen is de tijd loggen wanneer het werd uitgevoerd.

console.log("Hello", Date.now())

nu moeten we een launchd configuratieplistbestand aanmaken.

touch ~/Library/LaunchAgents/com.demo.daemon.plist

een plist-bestand is gewoon Apple ‘ s aangepaste XML-formaat voor configuraties. Plak deze code erin. Het kan nodig zijn om /Users/chet/demo te veranderen in de map die u gebruikt voor dit voorbeeld.

dit bestand specificeert een paar dingen:

  • de daemon start wanneer de gebruiker zich aanmeldt.
  • het zal elke 20 seconden worden uitgevoerd.
  • het zal naar enkele logbestanden worden uitgevoerd (erg handig voor debuggen).
  • het zal het omgevingspad instellen (handig als uw programma andere commando ‘ s van usr/local/bingebruikt).
  • het commando wordt uitgevoerd in de /Users/chet/demo map.
  • en het commando is /usr/local/bin/node main.js.

er zijn een heleboel andere opties die u hier kunt lezen. Een veelgebruikte optie is de KeepAlive optie die je script herstart wanneer het eindigt of crasht. Dit is handig als je wilt dat je script altijd draait.

nu moeten we het alleen nog aan de gang krijgen. Open eerst de Console.app. Je hebt het misschien nog nooit eerder gebruikt, maar het is een native utility app voor het debuggen van dit soort dingen. In het systeem.log sectie, U kunt com.demo.daemon Zoeken om te zien of er systeemfouten zijn wanneer u launchdprobeert te starten.

terug in je Terminal, voer je het volgende commando uit.

launchctl load ~/Library/LaunchAgents/com.demo.daemon.plist

als u een aantal fouten in Console.app ziet, kunt u de daemon stoppen met unload en zoeken naar fouten in het stderr.log bestand.

launchctl unload ~/Library/LaunchAgents/com.demo.daemon.plist
cat ~/demo/stderr.log

als alles goed ging, zou u niets in het Console.app moeten zien en zou u elke 20 seconden logs in het ~/demo/stdout.log bestand moeten zien komen.