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/bin
gebruikt). - 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 launchd
probeert 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.